Activity data interaction through onActivityResult, resultime
First, create two activities: MainActivity and OneActiivity.
The MainActivity code is as follows:
package com.tp.soft.app;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity implements OnClickListener{ private Button mTzBtn; private TextView mShow; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTzBtn = (Button) findViewById(R.id.tzBtn); mTzBtn.setOnClickListener(this); mShow = (TextView) findViewById(R.id.showMsg); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode == 1){ String msg = data.getStringExtra("FromOneActivity"); mShow.setText(msg); } } @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, OneActivity.class); String content = "Hello,OneActivity"; intent.putExtra("FromMainActivity", content); startActivityForResult(intent, 1); }}
Call
StartActivityForResult (intent, 1); 1 is
RequestCode returned by onActivityResult.
The OneActivity code is as follows:
package com.tp.soft.app;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class OneActivity extends Activity implements OnClickListener { private Button mbackBtn; private TextView mShow; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_one); mbackBtn = (Button) findViewById(R.id.backBtn); mbackBtn.setOnClickListener(this); mShow = (TextView) findViewById(R.id.showTxt); Intent intent = getIntent(); String show = intent.getStringExtra("FromMainActivity"); mShow.setText(show); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.one, menu); return true; } @Override public void onClick(View v) { Intent intent = new Intent(OneActivity.this, MainActivity.class); intent.putExtra("FromOneActivity", "Hello,MainActivity"); setResult(RESULT_OK, intent); finish(); }}
How to transmit data between two activities (when startActivity is not involved)
I don't think you can set the observer randomly. Because the activity has a lifecycle, your observer callback will disrupt the activity's lifecycle. We suggest using application context to share data, do not share data in static mode. Otherwise, there will be endless troubles.
Transfer Data between activities
Class Abc:
Public class Abc implements Serializable {
Private String name;
Public String getName (){
Return name;
}
Public void setName (String name ){
This. name = name;
}
}
Activity1:
Abc abc1 = new Abc ();
Abc1.setName ("abc1 ");
Abc abc2 = new Abc ();
Abc2.setName ("abc2 ");
ArrayList <Abc> abclist = new ArrayList <Abc> ();
Abclist. add (abc1 );
Abclist. add (abc2 );
Intent intent = new Intent ();
Intent. putExtra ("abclist", abclist );
Intent. setClass (Activity1.this, Activity2.class );
StartActivity (intent );
Activity2 values:
ArrayList <Abc> abclist = (ArrayList <Abc>) getIntent (). getSerializableExtra ("abclist ");
System. out. println (abclist. get (0). getName ());
System. out. println (abclist. get (1). getName ());