使用onNewIntent实现startActivityForResult的返回传值

首先创建两个Activity,分别为MainActivity和BActivity

在AndroidManifest.xml文件配置MainActivity的启动方式为android:launchMode="singleTask"

         
            


                
            
        

在MainActivity中写两个Button 点击事件

public class MainActivity extends Activity {
   private TextView maintxt;
   public String text;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
    }
  /*
   * 点击Button跳转到BActivity
  */
    public void click(View view){
    	Intent intent = new Intent(this, BActivity.class);
    	intent.putExtra("word", "hello");
    	startActivity(intent);
    }
 /*
   * 点击Button更新TextView的文本内容 需在MainActivity--BActivity--MainActivity跳转之后执行
  */
public void click2(View view){ maintxt = (TextView) findViewById(R.id.main_show_txt); maintxt.setText(text); }

   /*
   * 重写onNewIntent(Intent intent)方法
  */
 @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); text = intent.getStringExtra("word"); }}
 在BActivity中写两个Button点击事件

public class BActivity extends Activity {
   private TextView Btxt;
   public String msg;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_b);
	}
 
  /*
   * 点击获取MainActivity中传来的值
  */
 public void click(View view){Intent intent = getIntent();msg = intent.getStringExtra("word");Btxt = (TextView) findViewById(R.id.b_show_txt);Btxt.setText(msg);}

  /*
   * 点击跳转到MainActivity
  */
 public void click2(View view){Intent intent = new Intent(this, MainActivity.class);intent.putExtra("word", "hello,too");startActivity(intent);}


如果 BActivity 处于任务栈的顶端,也就是说之前打开过的 Activity ,现在处于 onPause、 onStop 状态的话, 其他应用再发送 Intent 的话,执行顺序为:onNewIntent,onRestart,onStart,onResume。这是就实现了startActivityForResult的返回值


你可能感兴趣的:(android)