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(); }}
- Android Activity启动、关闭、Activity返回结果到启动它的Activity
- Android 启动另外activity并返回结果
- Android 启动其他Activity并返回结果
- 【Android】启动其他Activity并返回结果
- Android--启动另一个Activity并返回结果
- Android启动关闭Activity
- 启动Activity并返回结果
- 启动其他的Activity并返回结果
- Activity启动另一个Activity,带结果的返回
- Android Activity---启动Activity
- Android Activity---启动Activity
- Android启动和关闭Activity
- android activity启动,关闭的动画实现
- Activity的启动、关闭、数据传输
- Android中启动其他Activity并返回结果
- Android中启动其他Activity并返回结果
- android: startActivityForResult用法(启动其他Activity并返回结果)
- startActivityForResult启动另一个Activity并返回结果
- Uva-10271 Chopsticks(DP)
- 吃草公司框架(Ofbiz框架的二次开发)的增删查改功能总结
- Framework的启动过程
- go语言正则表达式regexp
- 前端框架Vue(8)——子父组件的传参通信
- Android Activity启动、关闭、Activity返回结果到启动它的Activity
- MongoDB用户管理
- BZOJ 1231: [Usaco2008 Nov]mixup2 混乱的奶牛 状压DP
- 【OpenGL】OpenGL系列——05像素操作
- ZooKeeper 故障恢复
- 深度学习入门帖子,转自知乎,也希望能与大家共享
- C++求斐波那切数列及前n项和
- 哈希表及处理冲突的方法
- C语言入门之--指针