我有两个活动:MainActivity和SecondActicity。 在MainActivity上,我单击一个按钮,然后转到SecondActicity:
public void GoToSeconActivity(View view) {
Intent intent = new Intent(this, secondActivity.class);;
startActivity(intent);
}
在secondActivity上我点击一个按钮,然后我回到MainActivity并发送额外内容:
public void goBackToMainActivity() {
Intent intent = new Intent(getBaseContext(), MainActivity.class);
intent.putExtra("myVar", myVar);
startActivity(intent);
}
on MainActivity&on; onCreate我想在EditText中显示 myVar
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment())
.commit();
}
Bundle extras = getIntent().getExtras();
if (extras != null)
{
View myView = getLayoutInflater().inflate(R.layout.fragment_main, null);
EditText myVarEdittext1 = (EditText)myView.findViewById(R.id.myVarEditText);
string str = extras.getString("myVar");
myVarEdittext1.setText(str, TextView.BufferType.EDITABLE);
}
}
但它不起作用。
我尝试在setText之后添加myVarEdittext1.postInvalidate();
,但它没有帮助。
我也尝试将此代码放在
mHandler.post(new Runnable() {
@Override
public void run() {
View myView = ....
//...
myVarEdittext1.setText(str, TextView.BufferType.EDITABLE);
}
});
它也没有帮助......
我还能做什么?没有例外 - 但editText仍为空。
答案 0 :(得分:0)
您需要覆盖onActivityResult
中的MainActivity
并从中提取myVar
:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
string str = data.getString("myVar");
}
您还需要将来电从startActivity
更改为startActivityForResult
:
Intent intent = new Intent(this, SecondActivity.class);
startActivityForResult(intent, 1);
答案 1 :(得分:0)
添加获取Intent
数据的代码,并在EditText
上设置文字。
Bundle extras = getIntent().getExtras();
if (extras != null)
{
View myView = getLayoutInflater().inflate(R.layout.fragment_main, null);
EditText myVarEdittext1 = (EditText)myView.findViewById(R.id.myVarEditText);
string str = extras.getString("myVar");
myVarEdittext1.setText(str, TextView.BufferType.EDITABLE);
}
您似乎没有完成Activity
,因此未调用onCreate()
,但会调用onResume()
。
您也可以使用startActivityForResult()
。
答案 2 :(得分:0)
如果您的第二个活动将数据返回给您的MainActivity,那么您应该使用“startActivityForResult”在MainActivity中启动SecondActivity。 然后,当您在应用程序中启动SecondActivity时,您必须以不同的方式返回MainActivity。 使用Uri将数据返回到MainActivity。 这是高级Android开发作为初学者,你不应该追求这些东西。 如果你想了解更多关于我给你的Sub-Activity,请执行一些谷歌搜索和子活动的例子,并从中返回数据。