Android-更改活动后设置文本
我有两个活动:主要活动和次要活动。 在MainActivity上,我单击一个按钮并转到SecondActivity:Android-更改活动后设置文本,android,android-intent,Android,Android Intent,我有两个活动:主要活动和次要活动。 在MainActivity上,我单击一个按钮并转到SecondActivity: public void GoToSeconActivity(View view) { Intent intent = new Intent(this, secondActivity.class);; startActivity(intent); } 在第二个活动中,我单击一个按钮,然后返回主活动并发送额外信息: public void goBackToMainA
public void GoToSeconActivity(View view) {
Intent intent = new Intent(this, secondActivity.class);;
startActivity(intent);
}
在第二个活动中,我单击一个按钮,然后返回主活动并发送额外信息:
public void goBackToMainActivity() {
Intent intent = new Intent(getBaseContext(), MainActivity.class);
intent.putExtra("myVar", myVar);
startActivity(intent);
}
在MainActivity的onCreate上,我想在编辑文本中显示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);
}
}
但它不起作用。
我尝试添加myVarEdittext1.postInvalidate()代码>在setText之后,它没有帮助。
我也试着把这个代码放进去
mHandler.post(new Runnable() {
@Override
public void run() {
View myView = ....
//...
myVarEdittext1.setText(str, TextView.BufferType.EDITABLE);
}
});
这也没用
我还能做什么?没有例外-但编辑文本仍然为空。您需要覆盖main活动中的onActivityResult
,并从中提取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);
添加获取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);
}
您似乎没有完成活动
,因此不会调用onCreate()
,但会调用onResume()
您还可以使用startActivityForResult()
如果第二个活动将数据返回到主活动,则应使用“startActivityForResult”在主活动中启动第二个活动。
然后,当你在应用程序中启动第二个活动时,你必须以不同的方式返回到主活动。
使用Uri将数据返回到MainActivity。
这是先进的Android开发,作为一个初学者,你不应该追求这些东西。
如果你想知道更多关于我给你的子活动的信息,只需执行一些谷歌搜索和子活动的示例,并从中返回数据。在将myVar
设置为EditText
之前,请Toast
检查myVar
的值是否有任何值,以检查myVar
什么是Toast?无论如何,我也尝试在setText()中放入“blabla”,而不依赖于额外的内容,但它没有起作用。放入thisToast.makeText(MainActivity.this,str,Toast.LENGTH_LONG).show()代码>而不是myVarEdittext1.setText(str,TextView.BufferType.EDITABLE)
并检查是否显示了任何内容。@codeMagic-仍然不工作,editText保持为空…您是否尝试添加toast???这只是为了调试。。请执行。。