我有两个活动,Activity1和Activity2。
在Activity1中我有一个按钮和TextView。 当单击按钮时,Activity2启动。
在Activity2中,我有一个EditText。
我想在Activity1的TextView中显示从Activity2中的EditText检索到的数据,当从Activity2按回时。
有人能帮我写代码让它工作吗?
我有两个活动,Activity1和Activity2。
在Activity1中我有一个按钮和TextView。 当单击按钮时,Activity2启动。
在Activity2中,我有一个EditText。
我想在Activity1的TextView中显示从Activity2中的EditText检索到的数据,当从Activity2按回时。
有人能帮我写代码让它工作吗?
当前回答
我有一个问题,我想在一个软按钮中发送数据类型,这是我做的,软键是每个Android设备的默认值,所以我这样做了,首先我在我的“a”活动中做了一个意图:
Intent intent = new Intent();
intent.setClass(context, _AddNewEmployee.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivityForResult(intent, 6969);
setResult(60);
然后在我的第二个活动中,我在我的“B”活动中声明了一个字段:
private static int resultCode = 40;
然后在我请求成功后,或者每当我想告诉“A”活动,这项工作在这里成功完成时,将resultCode的值更改为与我在“A”活动中所说的相同,在我的情况下是“60”,然后:
private void backToSearchActivityAndRequest() {
Intent data = new Intent();
data.putExtra("PhoneNumber", employeePhoneNumber);
setResult(resultCode, data);
finish();
}
@Override
public void onBackPressed() {
backToSearchActivityAndRequest();
}
PS:如果你想让onBackPressed方法正常工作,请记住从onBackPressed方法中删除Super。
然后我应该调用onActivityResult方法在我的“A”活动以及:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 6969 && resultCode == 60) {
if (data != null) {
user_mobile = data.getStringExtra("PhoneNumber");
numberTextField.setText(user_mobile);
getEmployeeByNumber();
}
}
}
就是这样,希望能帮到你。# HappyCoding;
其他回答
其他答案不工作时,我把setResult在onBackPressed。注释调用super onBackPressed和手动调用finish可以解决这个问题:
@Override
public void onBackPressed() {
//super.onBackPressed();
Intent i = new Intent();
i.putExtra(EXTRA_NON_DOWNLOADED_PAGES, notDownloaded);
setResult(RESULT_OK, i);
finish();
}
在第一个活动中:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == QUEUE_MSG) {
if (resultCode == RESULT_OK) {
Serializable tmp = data.getSerializableExtra(MainActivity.EXTRA_NON_DOWNLOADED_PAGES);
if (tmp != null)
serializable = tmp;
}
}
}
将This作为startActivityforResult的替代。但是请记住,在这种情况下,这种方法在性能方面可能是昂贵的,但在某些情况下可能需要使用。
Activity2,
@Override
public void onBackPressed() {
String data = mEditText.getText();
SharedPreferences sp = getSharedPreferences("LoginInfos", 0);
Editor editor = sp.edit();
editor.putString("email",data);
editor.commit();
}
在Activity1,
@Override
public void onResume() {
SharedPreferences sp = getSharedPreferences("LoginInfos", 0);
String dataFromOtherAct= sp.getString("email", "no email");
}
这是你第一次参加活动。
public class Activity1 extends Activity{
private int mRequestCode = 100;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(this, Activity2.class);
startActivityForResult(intent, mRequestCode);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == mRequestCode && resultCode == RESULT_OK){
String editTextString = data.getStringExtra("editText");
}
}
}
从这里你开始你的Activity2.class使用startActivityForResult(mRequestCode, Activity2.class);
现在这是第二个活动,名称是Activity2
public class Activity2 extends Activity {
private EditText mEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//mEditText = (EditText)findViewById(R.id.edit_text);
Intent intent = new Intent();
intent.putExtra("editText", mEditText.getText().toString());
setResult(RESULT_OK, intent);
}
}
现在,当你完成你的第二个活动,然后你调用setResult()方法,从onBackPress()或从任何按钮点击当你的Activity2将破坏然后你的Activity1的回调方法onActivityResult()将从那里调用,你可以从意图获得你的数据。
希望对你有所帮助…:)
Activity1应该用startActivityForResult()启动Activity2。
Activity2应该使用setResult()将数据发送回Activity1。
Activity2,
@Override
public void onBackPressed() {
String data = mEditText.getText();
Intent intent = new Intent();
intent.putExtra("MyData", data);
setResult(resultcode, intent);
}
在Activity1,
onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == RESULT_OK) {
String myStr=data.getStringExtra("MyData");
mTextView.setText(myStr);
}
}
}
我有一个问题,我想在一个软按钮中发送数据类型,这是我做的,软键是每个Android设备的默认值,所以我这样做了,首先我在我的“a”活动中做了一个意图:
Intent intent = new Intent();
intent.setClass(context, _AddNewEmployee.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivityForResult(intent, 6969);
setResult(60);
然后在我的第二个活动中,我在我的“B”活动中声明了一个字段:
private static int resultCode = 40;
然后在我请求成功后,或者每当我想告诉“A”活动,这项工作在这里成功完成时,将resultCode的值更改为与我在“A”活动中所说的相同,在我的情况下是“60”,然后:
private void backToSearchActivityAndRequest() {
Intent data = new Intent();
data.putExtra("PhoneNumber", employeePhoneNumber);
setResult(resultCode, data);
finish();
}
@Override
public void onBackPressed() {
backToSearchActivityAndRequest();
}
PS:如果你想让onBackPressed方法正常工作,请记住从onBackPressed方法中删除Super。
然后我应该调用onActivityResult方法在我的“A”活动以及:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 6969 && resultCode == 60) {
if (data != null) {
user_mobile = data.getStringExtra("PhoneNumber");
numberTextField.setText(user_mobile);
getEmployeeByNumber();
}
}
}
就是这样,希望能帮到你。# HappyCoding;