switch activity and send string as an extra to another activity - java

I have a TabLayoutObjectActivity that shows 2 tabs with a different activity(TabActivity1 & TabActivity2).
I have another activity called ObjectActivity. It contains an array and if it is clicked I want the app to change to the TabLayoutObjectActivity (which shows TabActivity1 first) and sends a string from an array that clicked to TabActivity1.
I have tried some code but the app always wants to force close after I click one of the array list.
Intent i = null;
i = new Intent(this, TabLayoutObjekActivity.class);
Intent ii = null;
ii = new Intent(this, TabActivity1.class);
ii.putExtra("name", String.valueOf(menuArray[position].toString()));
startActivity(i);
startActivity(ii);
Please give me your opinion how to do this. Thanks :)

Refer to this. It explains how to solve your problem in detail. onclick even you can handle the issue.

Related

How to display the checked radio button label in the next activity?

int radioId = radioGroup2.getCheckedRadioButtonId();
radioButton2 = findViewById(radioId);
textView1.setText(radioButton2.getText() + " > ");
I want to display the label of checked radio button in the next activity like this -----> Android Developers > Docs > Guiders
Please help me.
Next, how can I display the label of checked radio button
(first activity) in the third activity ?
There is several ways that's depend on your need:
Using Intent Data
You can put that text as extra into your intent that starting next activity:
Intent i = new Intent(firstActivity.this, nextActivity.class);
i.putExtra("CheckedRadioText", radioButton2.getText());
startActivity(i);
And get extra at next activity's onCreate method like below:
Intent i = getIntent();
String text = i.getStringExtra("CheckedRadioText");
myTextView.setText(text);
You can set radio button's text to a static string and access it from next activity easily (personally, not recommended).
If this radio button is something like setting selection that you need to save this. Then you can save that text to a sharedPreference. There are several tutorials available for this approach.

How To Save And Display Int In Another Activity?

I have two activities, one is a clicker game (where you click a button and the textView displays an int (increasing per click). The other activity is where I display that int. I've tried many times of different ways of how to pass this data to the next activity, however nothing seemed to work. I assume that this could be because this int does not stay the same, and is constantly changing. Could anyone suggest what to do?
Clicker:
Intent getNumber = new Intent(this, Shop.class);
getNumber.putExtra("passedMoney", clicks);
startActivity(getNumber);
Stats:
Intent getNumber = getIntent();
int clicks = getNumber.getIntExtra("passedMoney", 0);
clicks is the int, which is 0.
Thanks in advance :)
Send data on click
startActivity(new Intent(vContext, OtherActivity.class).getIntExtra("number", itemData));
How to get data
int pos = getIntent().getIntExtra("number", 0);

Transfering int between activities does not work correctly

I need to transfer User and int between 2 activities, this happens when clicked on item in listview,
Activity 1:
Intent intent = new Intent(GameActivity.this,ServerActivity.class);
intent.putExtra("serverNum",position);
intent.putExtra("currentUser",currentUser);
Log.d("position", position + "");
startActivity(intent);
finish();
the position is by defult the number of the item that the user clicked on, The log.d shows the currect position indeed, but when I try to get that Int in activity 2 its always 0.
In activity 2:
Log.d("Server Number",getIntent().getExtras().getInt("serverNum")+"");
this log.d always shows 0.
the user transfers well though.
EDIT
I found out it has something to do with android:launchMode="singleTask" in the manifest, for some reason the activity opens twice, one opens well and one for some reason opens with the extra "serverNum" equals to 0, any suggestions on how to fix this?
Try this in your Activity 2.
int id=getIntent().getIntExtra("serverNum", 0);
Log.d("ServerNumber",id+"");
Try overriding method and check value there as well
#Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
int id=intent.getIntExtra("serverNum", 0);
Log.d("ServerNumber",id+"");
setIntent(intent);
}
You should get rid of android:launchMode="singleTask". The reason is that this creates only one instance of the activity. Once you go back to it, it resets the extra to 0. Here you can read up on launch types: https://inthecheesefactory.com/blog/understand-android-activity-launchmode/en

Switching between activities without data loss

I'm working on an app that has two activities.
When I go from one activity to another then return I loss the data.
Imagine:
First activity shows a random number on a text view that changes on a button click
Second activity does nothing it only has a return to the main activity button
*I know this app is worthless but its easier than showing you my large application...
So you have a random number on the textview, I go to the next activity then return to the main activity and the textview loses the number and shows another.
What the question is, is how to return to the activity without lossing the data (random number)?
I dont want to save it on a database or on the sharedprefes since that wouldn't be good when being used in a large app with many data shown...
Thx in advance
Edit:
Code to act1:
//public clas... oncreate...
Onclick(...){
Intent intent = New intent (this, acttwo.class);
StartActivity (intent);
Finish ();
}
Code to act2:
//public clas... oncreate...
Onclick(...){
Intent intent = New intent(this, actone.class);
StartActivity (intent);
Finish ();
}
Your problem cause, because
You are calling finish() in Activity 1 when you starting Activity 2.
So remove finish() from Activity 1. and implement onActivityResult()
Like,
Onclick(...){
Intent intent = New intent (this, acttwo.class);
StartActivityForResult(intent, 0); // Result to ensure about back track of proper activity
}
Now Activity 2 just call finish() no need to call start Activity 1 again as Activity 1 is already in back stack of Application task.
So it should be,
//public clas... oncreate... of acttwo
Onclick(...){
finish(); // We are just finishing Activity 2 not starting Activity 1 again
}
Note:
In future it may happen Android system may kill your Application on Low Memory issue, so better to save your data and state of activity in SharedPreferences or Database.
You need to save your data one way or another. Without using DB or other classical methods(shared preferences) used for saving data in Android, as I see it, you are left with two options:
Pass the data with Intents as extras
Save it using method described in Accepted Answer at Saving Activity state in Android
You could use a static variable in your Activity to hold whatever random number your TextView is meant to hold and set its text to that every onResume() call. Something like;
class MyActivity extends Activity {
private static int randomNumber;
private TextView myTextView;
...
#Override
public void onResume(Bundle b){
super.onResume(b);
myTextView.setText(randomNumber);
}
}
Your TextView should persist the number that you had before. If you were setting these values in the onResume() method, then they would change every time the activity resumes. If you terminate your activity with a call to finish (while calling B) and then start a new activity A again (from B), then it will show a random number
If you have to do either of the methods I mentioned, you can add the values you want to persist in an intent as an extra, pass this to the second activity and then pass it back like so:
// Start activity B and pass the value you want to save in there
Intent A = new Intent(this, ActivityB.class);
A.putExtra("value", number);
// Start activity A from B and pass the value you saved in there
Intent B = new Intent(this, ActivityA.class);
B.putExtra("value", getIntent().getExtra("value");
Then retrieve number and set the TextView in your onResume (or onCreate if you are starting a fresh activity. But in this case do a check to see if the intent starting this activity has an extra named value - if yes, then display it else generate a new random number).

Android select from selectors then display on map

First screen user is ask to select different buttons that are categories then after the categories are selected display the locations in a map.
For example user selects to search for restaurants and bars then click search. Then the next screen will show icons with the locations in the map.
Im confused on how to pass the data from my mainActivity to the MapActivity.
I try to do a loop for each button: but it displays all the buttons I only want to display the selected ones.
----------------Activityone----------------
if (toggleButton5.isChecked()) {
double point3=37326489;
double point4=-121772461;
Bundle b = new Bundle(); // create a bundle to pass to map activity
b.putDouble("point3",point3); // bundle the geo points for the map activity and convert to 1e6
b.putDouble("point4",point4);
Intent myIntent = new Intent(view.getContext(), Map.class); // create the intent to launch the map
myIntent.putExtras(b); // attach bundle to map activity
startActivityForResult(myIntent, 0); // start map activity
//map things!
}
----------------MapAcivity----------------
Bundle b = this.getIntent().getExtras();
Drawable drawable1 = this.getResources().getDrawable(R.drawable.button_food_on);
OverlayMap itemizedoverlay2 = new OverlayMap(drawable1, this);
GeoPoint point2 = new GeoPoint((int)(b.getDouble("point3")),(int) (b.getDouble("point4")));
OverlayItem overlayitem1 = new OverlayItem(point2, "", "");
itemizedoverlay2.addOverlay(overlayitem1);
mapOverlays.add(itemizedoverlay2);
Edit:
first here is an image of the first screen:
You're trying to do a lot of things here. Parsing xml in android is not trivial. Filtering a list of displayable icons in android is not trivial. When asked individually, answers to these problems are easy to find on this website.
I'll help you with one of the trivial problems to get you started on your way, though.
The reason you're not getting the variables that you want to filter to your MapActivity is because you aren't sending them.
Before you start your intent (and after you declare it) put the variables you want to filter in an Extra, possibly as an array of strings.
String[] searchFilter = {"restaurants", "bars"}; //build this array of variables from your buttons, this is just a static example
Intent myIntent3 = new Intent(view.getContext(), MapActivity.class);
myIntent3.putExtra("yourFilter", searchFilter);
startActivityForResult(myIntent3, 1);
Then in your MapActivity you can extract that data that you sent to it from the OnCreate or OnResume function (though really you can call it anywhere inside the activity).
String[] filterYouJustSent = this.getIntent().getStringArrayExtra("yourFilter");
filterYoujustSent in MapActivity should now have {"restaurants", "bars"} as its data.
If you didn't attach anything to that named extra, filterYouJustSent will be null.

Categories

Resources