Activity启动其它Activity有以下两种方式:
startActivity(Intent intent); 启动其它Activity startActivityForResult(Intent intent, int requestCode); //只是用在onActivityResult()方法里才有效。
以指定的请求码启动Activity,程序会获取新启动的Activity的返回结果通过复写onActivityResult(int requestCode, int resultCode, Intent data)
使用例程
public static final int REQUEST_DTV_LAUNCHER = 1620; public static final int RESULT_ALL_APP = 1621; public static final int RESULT_SET_WALLPAPER = 1622;
Activity_A.java
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode != REQUEST_DTV_LAUNCHER) //通过requestCode值判断是否是所要接收的Activity返回
{ return; }
switch(resultCode) { case RESULT_ALL_APP: { String date = data.getStringExtra("data"); if(!date.equals("")){ //需要完成的操作 } } break; case RESULT_SET_WALLPAPER: { int value = data.getIntExtra("wallpaper_id", 0); } break; default: return;
}
}
Activity_B.java
在操作处理方法里:
Intent intent = new Intent();
intent.putExtra("data", pkg+":"+cls);
setResult(Activity_A.RESULT_ALL_APP, intent); //设置返回resultCode 及返回的Intent实例,在onActivityResult方法里获取这些参数。
finish();
关闭Activity:
finish();结束当前Activity finishActivity(int requestCode); 结束以startActivityForResult()方法启动的Activity,用在onActivityResult()方法里。
小例程:
activity_start.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="shortcut.song.com.myapplication.StartActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Start" android:onClick="StartActivity" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="StartForReslutActivity" android:onClick="StartActivityForResult" /> <Button android:id="@+id/id_tv_show" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>activity_result.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="shortcut.song.com.myapplication.ResultActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Result-A" android:onClick="ResultA"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Result-B" android:onClick="ResultB" /> </LinearLayout> StartActivity.java package shortcut.song.com.myapplication; import android.content.ComponentName; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.TextView; public class StartActivity extends AppCompatActivity { public final static int REQUEST_CODE_A = 6601; public final static int RESULT_CODE_A = 6501; public final static int RESULT_CODE_B = 6502; TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_start); mTextView = (TextView)findViewById(R.id.id_tv_show); } public void StartActivity(View v) { Intent intent = new Intent(); intent.setComponent(new ComponentName(StartActivity.this, ResultActivity.class)); startActivity(intent); //启动Activity不返回结果 } public void StartActivityForResult(View v) { Intent intent = new Intent(); intent.setComponent(new ComponentName(StartActivity.this, ResultActivity.class)); startActivityForResult(intent, REQUEST_CODE_A);//启动Activity返回结果, } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (REQUEST_CODE_A != requestCode) { return ; } switch(resultCode) { case RESULT_CODE_A: String str = data.getStringExtra("name"); if(!str.equals("")) { mTextView.setText(str); } //finishActivity(StartActivity.REQUEST_CODE_A); break; case RESULT_CODE_B: int value = data.getIntExtra("id",0); mTextView.setText("Id:"+value); //finishActivity(StartActivity.REQUEST_CODE_B); break; default: break; } } }ResultActivity.java
package shortcut.song.com.myapplication; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; public class ResultActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_result); } public void ResultA(View v) { Intent intent = new Intent(); intent.putExtra("name","Name Is A"); setResult(StartActivity.RESULT_CODE_A, intent); finish(); } public void ResultB(View v) { Intent intent = new Intent(); intent.putExtra("id", 123456); setResult(StartActivity.RESULT_CODE_B, intent); finish(); } }