Android-更改活动后设置文本

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

我有两个活动:主要活动和次要活动。 在MainActivity上,我单击一个按钮并转到SecondActivity:

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”,而不依赖于额外的内容,但它没有起作用。放入this
Toast.makeText(MainActivity.this,str,Toast.LENGTH_LONG).show()而不是myVarEdittext1.setText(str,TextView.BufferType.EDITABLE)
并检查是否显示了任何内容。@codeMagic-仍然不工作,editText保持为空…您是否尝试添加toast???这只是为了调试。。请执行。。