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

来源:互联网 发布:钢铁力量6级天炉数据 编辑:程序博客网 时间:2024/06/05 22:35

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



0 0