Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Return back to MainActivity from another activity

The MainActivity contains some buttons. Each button opens a new activity via an intent. These activities then have a button to return to the MainActivity via an intent.

But when I press a button to return to the MainActivity, I get some sort of menu on the screen! Someone who knows what could be wrong? Preciate some help! Thanks!

EDIT: The return button in one of the other activities:

Button btnReturn1 = (Button) findViewById(R.id.btnReturn1); btnReturn1.setOnClickListener(new View.OnClickListener() {           public void onClick(View v) {         // TODO Auto-generated method stub         Intent returnBtn = new Intent("android.intent.action.MAIN");         startActivity(returnBtn);     } }); 

The Manifest:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.kullaberg.test02" android:versionCode="1" android:versionName="1.0" >  <uses-sdk     android:minSdkVersion="10"     android:targetSdkVersion="15" />  <application     android:icon="@drawable/ic_launcher"     android:label="@string/app_name"     android:theme="@style/AppTheme" >     <activity         android:name=".MainActivity"         android:label="@string/title_activity_main" >         <intent-filter>             <action android:name="android.intent.action.MAIN" />              <category android:name="android.intent.category.LAUNCHER" />         </intent-filter>     </activity>     <activity         android:name=".Activity1"         android:label="@string/title_activity_main" >         <intent-filter>             <action android:name="android.intent.action.ACTIVITY001" />              <category android:name="android.intent.category.DEFAULT" />         </intent-filter>     </activity>     <activity         android:name=".Activity2"         android:label="@string/title_activity_main" >         <intent-filter>             <action android:name="android.intent.action.ACTIVITY002" />              <category android:name="android.intent.category.DEFAULT" />         </intent-filter>     </activity>     <activity         android:name=".Activity3"         android:label="@string/title_activity_main" >         <intent-filter>             <action android:name="android.intent.action.ACTIVITY003" />              <category android:name="android.intent.category.DEFAULT" />         </intent-filter>     </activity> </application> 

like image 639
3D-kreativ Avatar asked Feb 13 '13 07:02

3D-kreativ


People also ask

How can I recover data from another activity?

We can send the data using putExtra() method from one activity and get the data from the second activity using getStringExtra() methods. Example: In this Example, one EditText is used to input the text. This text is sent to the second activity when the “Send” button is clicked.

How do you pass data from second activity to first activity?

Step 1 − Create a new project in Android Studio, go to File ⇒ New Project and fill all required details to create a new project. Step 2 − Add the following code to res/layout/activity_main. xml. Step 4 − Add the following code to res/layout/activity_second.


2 Answers

Here's why you saw the menu with the code you listed in your onClick method:

You were creating an Intent with the constructor that takes a string for the action parameter of the Intent's IntentFilter. You passed "android.intent.action.MAIN" as the argument to that constructor, which specifies that the Intent can be satisfied by any Activity with an IntentFilter including <action="android.intent.action.MAIN">.

When you called startActivity with that Intent, you effectively told the Android OS to go find an Activity (in any app installed on the system) that specifies the android.intent.action.MAIN action. When there are multiple Activities that qualify (and there are in this case since every app will have a main Activity with an IntentFilter including the "android.intent.action.MAIN" action), the OS presents a menu to let the user choose which app to use.

As to the question of how to get back to your main activity, as with most things, it depends on the specifics of your app. While the accepted answer probably worked in your case, I don't think it's the best solution, and it's probably encouraging you to use a non-idiomatic UI in your Android app. If your Button's onClick() method contains only a call to finish() then you should most likely remove the Button from the UI and just let the user push the hardware/software back button, which has the same functionality and is idiomatic for Android. (You'll often see back Buttons used to emulate the behavior of an iOS UINavigationController navigationBar which is discouraged in Android apps).

If your main activity launches a stack of Activities and you want to provide an easy way to get back to the main activity without repeatedly pressing the back button, then you want to call startActivity after setting the flag Intent.FLAG_ACTIVITY_CLEAR_TOP which will close all the Activities in the call stack which are above your main activity and bring your main activity to the top of the call stack. See below (assuming your main activity subclass is called MainActivity:

btnReturn1.setOnClickListener(new View.OnClickListener() {     public void onClick(View v) {         Intent i=new Intent(this, MainActivity.class);         i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);         startActivity(i);     } )}; 
like image 62
Brian Cooley Avatar answered Sep 23 '22 04:09

Brian Cooley


why don't you call finish();

when you want to return to MainActivity

   btnReturn1.setOnClickListener(new View.OnClickListener() {     public void onClick(View v) {         finish();     } }); 
like image 43
Intathep Avatar answered Sep 23 '22 04:09

Intathep