Use a String as an Url in android - android

I have in android a string, and in this string there is an url.
So now Iput that string into a put.extra, because I want to give that string to an 2. Activity.
Now in the 2. Activity I want to recive my string and use that url , which is in the string, for a new/other string.
How can I done this??
For myself I did an example which you can see under this , but when I run this App get a blank page in the Second Activity! Whats wrong in this code??
Code example:
Activity String definition:
private static final String TAG_PURL = "url";
Extra and new Intent:
Bundle bundle = new Bundle ();
bundle.putSerializable(TAG_PURL, purl);
// Starting new intent
Intent postin = new Intent(getApplicationContext(), post.class);
postin.putExtras(bundle);
startActivity(postin);
}
});
Reciving Extra:
Intent postin = getIntent();
Bundle bundle = this.getIntent().getExtras();
String purl = (String) bundle.getSerializable (TAG_PURL);
Use of the purl String in a new String:
private static final String url = TAG_PURL ;

You can try this if you want:
private static final String TAG_PURL = "url";
Intent i = new Intent(A.this, B.class);
i.putExtra("URL", TAG_PURL);
startActivity(i);
You can get this from your activity b like:
Bundle extras = getIntent().getExtras();
String url= extras.getInt("URL");

Related

Android serializable putextra

I'm new on Android and I want to know how I can use Serializable in my code
First Activity:
#Override
public void onItemClick(Neighbour item) {
Intent i = new Intent(getActivity(), ProfilNeighbourActivity.class);
i.putExtra("avatar", item.getAvatarUrl());
i.putExtra("name", item.getName());
i.putExtra("city", item.getAddress());
i.putExtra("phone", item.getPhoneNumber());
i.putExtra("about", item.getAboutMe());
i.putExtra("fbUrl", item.getFbUrl());
startActivity(i);
}
Second Activity:
mAvatar = findViewById(R.id.profil_neighbour_image);
mName1 = findViewById(R.id.profil_neighbour_name1);
mName2 = findViewById(R.id.profil_neighbour_name2);
mCity = findViewById(R.id.profil_neighbour_city);
mPhone = findViewById(R.id.profil_neighbour_phone);
mAbout = findViewById(R.id.profil_neighbour_about);
mFbUrl = findViewById(R.id.profil_neighbour_fbUrl);
Intent i = getIntent();
String image = i.getStringExtra("avatar");
String name = i.getStringExtra("name");
String city = i.getStringExtra("city");
String phone = i.getStringExtra("phone");
String about = i.getStringExtra("about");
String fbUrl = i.getStringExtra("fbUrl");
Glide.with(this).asBitmap().load(image).fitCenter().into(mAvatar);
mName1.setText(name);
mName2.setText(name);
mCity.setText(city);
mPhone.setText(phone);
mFbUrl.setText(fbUrl + name);
mAbout.setText(about);
How can I shorten my code with Serializable please?
you can use passing objects around then Parcelable
more details : Parcelable

I want to pass String array to textView in another activity in android?

This is the first activity
Intent intent = new Intent(Songs.this,PlayingSong.class);
Bundle bundle=new Bundle();
bundle.putStringArray("data",songs);
intent.putExtras(bundle);
startActivity(intent);
This is the second activity
tv = (TextView)findViewById(R.id.playingSongName);
imge = (ImageView)findViewById(R.id.playingImage);
Bundle bundle = getIntent().getExtras();
String[] arrRecd = bundle.getStringArray("data");
tv.setText(arrRecd[]);
You can't set a String Array directly to the TextView. Instead create a String and set it to the TextView.
String text = "";
for(int i = 0; i < arrRecd.length; i++) {
text = text + arrRecd[i];
}
tv.setText(text);
In First Activity :
Intent intent=new Intent(this,SearchActivity.class);
intent.putStringArrayListExtra("data",songs);
startActivity(intent);
In second activity:
ArrayList<String> list=getIntent().getStringArrayListExtra("data");

passing intent value to another activity

Why the value did not appear in the second activity which is consultDoctorAnaemia? I think the code is already correct. But it display null.
resultAnaemia
if(symptom16.equals("Yes"))
{
weight=0.11;
newWeight = 0.0 * 0.15; //cf disease = 0.6, [min=0.15]
String cf = Double.toString(newWeight);
Intent intent = new Intent(resultAnemia.this, consultDoctorAnaemia.class);
intent.putExtra("cfDiseases", cf);
startActivity(intent);
}
consultDoctorAnaemia
TextView textView = (TextView) findViewById(R.id.textCF);
//get passed intent
Intent intent = getIntent();
if(null != intent)
{
//get cf value from intent
String cf = intent.getStringExtra("cfDiseases");
textView.setText("Certainty value : " + cf);
}
Bundle extras = getIntent().getExtras();
if (extras != null) {
String Diseases = extras.getString("cfDiseases");
}
You need to do in the consultDoctorAnaemia activity:
Bundle bundle = getIntent().getExtras();
String value2 = bundle.getString("cfDiseases");
Try this in first activity:
// do your intent setup somewhere and then setup bundle
Bundle info = new Bundle();
info.putString("cfDiseases", cf);
intent.putExtras(info);
startActivity(intent);
In new activity:
Bundle info = new Bundle();
info = getIntent().getExtras();
cf = info.getString("cfDiseases");
You can also pass value like this way
Declare your string global and static For example
Declare in variable in this class
Class A
public class A extends Activity{
static String cf = "abcde";
}
Access variable in this B class
class B
public class B extends Activity{
String Temp;
//you can get variable like this
Temp=A.cf ;
Toast.makeText(B.this, "Temp = "+Temp, Toast.LENGTH_SHORT).show();
}

How do i send multiple Integers to a new activity?

I have a way that I know is not the best way of sending them over rite now but I'm sending them as strings and converting them to an Int on the reciver side, the problem is when I do the conversion it crashes on my phone. This is what I have on my sender side:
public void sendMessage(View view) {
// Do something in response to button
Intent intent = new Intent(this, PayTracker.class);
// hourly wage send
EditText editText = (EditText) findViewById(R.id.hourly_wage);
String message1 = editText.getText().toString();
intent.putExtra(MESSAGE_1, message1);
// ot wage send
EditText editText1 = (EditText) findViewById(R.id.ot_wage);
String message2 = editText1.getText().toString();
intent.putExtra(MESSAGE_2, message2);
// hours per day send
EditText editText2 = (EditText) findViewById(R.id.hours_day);
String message3 = editText2.getText().toString();
intent.putExtra(MESSAGE_3, message3);
// start new activity
startActivity(intent);
And this is what is on my reciving side:
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pay_tracker);
getActionBar().setDisplayHomeAsUpEnabled(true);
// Receive messages from options page
Intent intent = getIntent();
String message1 = intent.getStringExtra(Options.MESSAGE_1);
String message2 = intent.getStringExtra(Options.MESSAGE_2);
String message3 = intent.getStringExtra(Options.MESSAGE_3);
// convert string to integer
int HW = Integer.valueOf(message1);
int OTW = Integer.valueOf(message2);
int HPD = Integer.valueOf(message3);
Ive tested everything and its the conversion that is causing the app to crash, i was hoping somebody could help me make it not crash or give me a whole new way sending an int to my second activity insted of sending a string and converting it.
Thank you!
=======================================================================
Here is my new code with all your help!
Sending:
public void sendMessage(View view) {
// Do something in response to button
Intent intent = new Intent(this, PayTracker.class);
// Gather text from text boxes
EditText editText = (EditText) findViewById(R.id.hourly_wage);
EditText editText1 = (EditText) findViewById(R.id.ot_wage);
EditText editText2 = (EditText) findViewById(R.id.hours_day);
//Create String from text
String message1 = editText.getText().toString();
String message2 = editText1.getText().toString();
String message3 = editText2.getText().toString();
//Convert String to Int
int HW = 0, OTW = 0, HPD = 0;
try{
HW = Integer.valueOf(message1);
OTW = Integer.valueOf(message2);
HPD = Integer.valueOf(message3);
}
catch(NumberFormatException nfe){
//do something else here
//for e.g. initializing default values to your int variables
}
// Send Integers to PayTracker.java
intent.putExtra(MESSAGE_HW, HW);
intent.putExtra(MESSAGE_OTW, OTW);
intent.putExtra(MESSAGE_HPD, HPD);
// start new activity
startActivity(intent);
}
Receiving side:
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pay_tracker);
getActionBar().setDisplayHomeAsUpEnabled(true);
// Receive messages from options page
Intent intent = getIntent();
int HW = intent.getIntExtra(Options.MESSAGE_HW, 0);
int OTW = intent.getIntExtra(Options.MESSAGE_OTW, 0);
int HPD = intent.getIntExtra(Options.MESSAGE_HPD, 0);
// set textview
TextView textView = (TextView) this.findViewById(R.id.yourpay);
textView.setText(String.valueOf(HW));
}
You don't need to pass Integers as Strings to be converted back in the receiving Activity. Intents can hold Integers as well as Strings.
Simply add your data like you normally would:
int foo = 5;
Intent intent = new Intent(this, bar.class);
intent.putExtra("foobar", foo);
And then retrieve your int from the intent in the receiving Activity as follows.
Intent intent = getIntent();
int foo = intent.getIntExtra("foobar", 0);
Intents can hold more data than just Strings. In fact, take a look at the documentation. You can see that Intents can hold Longs, Doubles, Floats, Parcelables, etc.
Pass data from one activity to another activity "String" value.useing intent
Activityone
Intent intent = new Intent(Activityone.this,Activitytwo.class)
intent.putExtra("TYPE", type);
startActivity(intent);
Activitytwo
Intent intent =getIntent();
Receivevalue =intent.getExtras().getString("TYPE");
(OR)
Receivevalue = getIntent().getExtras().getString("TYPE");
Pass data from one activity to another activity "Integer" value.useing intent
Activityone
Intent intent = new Intent(Activityone.this,Activitytwo.class)
intent.putExtra("TYPE", type);
startActivity(intent);
Activitytwo
Intent intent = getIntent();
value = intent.getIntExtra("TYPE", 0);
// Type = intent.getIntExtra(name, defaultValue);
Try something like this on the send side:
String message1 = editText.getText().toString();
intent.putExtra("MESSAGE_1", message1);
String message2 = editText1.getText().toString();
intent.putExtra("MESSAGE_2", message2);
String message3 = editText2.getText().toString();
intent.putExtra("MESSAGE_3", message3);
Receive side:
if (getIntent() != null) {
if (getIntent().getExtras() != null) {
String mess1 = getIntent().getExtras().getString("MESSAGE_1");
String mess2 = getIntent().getExtras().getString("MESSAGE_2");
String mess3 = getIntent().getExtras().getString("MESSAGE_3");
}
}
You can achieve your goal using following code
In Your Calling Activity
Intent value = new Intent(YourCallingActivity.this,DestinationActivity.class);
value.putExtra("integerone", integeronevalue);
value.putExtra("integertwo", integertwovalue);
value.putExtra("integerthree", integertwovalue);
startActivity(value);
In Destination Activity
int integerone = getIntent().getExtras().getInt("integerone");
int integertwo = getIntent().getExtras().getInt("integertwo");
int integerthree = getIntent().getExtras().getInt("integerthree");
Hope it helps
Encapsulate the conversion part within try/catch block, because your strings may not be convertible into integer values.
int HW, OTW, HPD;
try{
HW = Integer.valueOf(message1);
OTW = Integer.valueOf(message2);
HPD = Integer.valueOf(message3);
}
catch(NumberFormatException nfe){
//do something else here
//for e.g. initializing default values to your int variables
}
*Or more appropriately, pass the integer values in your sending part and receive them as it is.

Getting Null values while Passing datas through Intent to another activity

I am getting null Values while passing datas through Intent from 1 activity to another activity.
Passing from 1Activity:
int s = position;
String str=adapter.getId(position);
int Type=DeviceType;
Bundle bunch=new Bundle();
bunch.putString("id", str);
bunch.putInt("DeviceType",Type);
bunch.putInt("position", s);
Intent It=new Intent();
It.setClass(PYSActivity.this,GridImages.class);
It.putExtras(bunch);
startActivity(It);
Retriveing here in 2 Activity:
super.onCreate(savedInstanceState);
setContentView(R.layout.main1);
Bundle b = this.getIntent().getExtras();
AppID=b.getString("id");
DeviceType=b.getInt("DeviceType");
Position=b.getInt("position");
list=(GridView)findViewById(R.id.list);
adapter1=new LazyAdapter1(this,mStrings,like,Rate,Id,img);
list.setAdapter(adapter1);
Do something like this:
Activity 1:
int myInt = 5;
String myString = "hi";
...
Intent Intent = new Intent(...);
intent.putExtra("string_key", myString);
intent.putExtra("int_key", myInt);
startActivity(intent);
Activity 2:
int getInt;
String getString;
...
Bundle extras = getIntent().getExtras();
// Read the extras data if it's available.
if (extras != null)
{
getInt = extras.getInt("int_key");
getString = extras.getString("string_key");
}
Why you are creating bundle just use intent.
it.putExtra("id", str);
it.putExtra("DeviceType",Type);
it.putExtra("position", s);

Categories

Resources