Android Activity启动、关闭、Activity返回结果到启动它的Activity

    xiaoxiao2021-04-18  60

    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(); } }

    转载请注明原文地址: https://ju.6miu.com/read-675270.html

    最新回复(0)