[英]Android - Issue Passing and saving the data between two activities using intents
我的第一個活動中有一個TextView
和一個Button
,第二個活動中有一個EditText
和一個Button
。
在第二個活動中,我想將一個EditText
值傳遞給第一個活動,並在第一個活動中顯示TextView
,我也想在從第一個活動返回后保存給定的edittext值
public class ActivityA extends Activity {
TextView textView;
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_activity);
button = (Button) findViewById(R.id.button);
textView = (TextView) findViewById(R.id.tv1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
gotoActivityB();
}
});
}
/* private void gotoActivityB(){
Intent intent = new Intent(this, ActivityB.class);
startActivityForResult(intent, 0); //0 is a request code
}*/
private void gotoActivityB()
{
Intent intent = new Intent(this,ActivityB.class);
intent.putExtra("value",textView.getText());
startActivityForResult(new Intent(this,ActivityB.class),101);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
// get String data from Intent
String returnString = data.getStringExtra("keyName");
// set text view with string
textView.setText(returnString);
}
}
}
}
第二活動
public class ActivityB extends Activity {
EditText edittext;
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
edittext=(EditText)findViewById(R.id.edt);
Intent intent = getIntent();
String str = intent.getStringExtra("value"); // that means you have passed value from activity B to activity A, otherwise activity B is fresh launched.
if(str!=null)
{
edittext.setText(str);
}
button=(Button)findViewById(R.id.btn1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// get the text from the EditText
EditText editText = (EditText) findViewById(R.id.edt);
String stringToPassBack = editText.getText().toString();
// put the String to pass back into an Intent and close this activity
Intent intent = new Intent();
intent.putExtra("keyName", stringToPassBack);
setResult(RESULT_OK, intent);
finish();
}
});
}
}
在第二個活動按鈕上單擊
使用這樣的代碼:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent();
intent.putExtra("KEY",value);
setResult(Activity.RESULT_OK,intent);
finish();
}
});
在ActivityA
,將gotoActivityB()
方法更改為
private void gotoActivityB(){
Intent intent = new Intent(this, ActivityB.class);
startActivityForResult(intent, 0); //0 is a request code
}
然后在ActivityA
覆蓋onActivityResult
方法
// This method is called when the second activity finishes
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
// get String data from Intent
String returnString = data.getStringExtra("keyName");
// set text view with string
textView.setText(returnString);
}
}
}
在您的ActivityB
,單擊按鈕時編寫以下代碼
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// get the text from the EditText
EditText editText = (EditText) findViewById(R.id.editText);
String stringToPassBack = editText.getText().toString();
// put the String to pass back into an Intent and close this activity
Intent intent = new Intent();
intent.putExtra("keyName", stringToPassBack);
setResult(RESULT_OK, intent);
finish();
}
});
還可以從ActivityB
刪除onDestroy()
方法,這是不需要的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.