Android如何在转到另一个Activity时在文本编辑器中保留值

时间:2014-05-14 10:57:29

标签: android android-intent android-activity

我有两个android活动。 Activity1是一个输入表单。在此活动中有一个manyTextEditor和ImageView。但是许多TextEditor中的一个需要转到Activity2来填充数据并将数据返回给Activity1。

但是当用户返回到Activity1时,用户的TextEditor中的值已经填充它,然后转到activity2就会丢失。

转到另一个Activity时如何仍然是TextEditor的值。

感谢任何想法。

4 个答案:

答案 0 :(得分:3)

这是官方指南:

http://developer.android.com/training/basics/activity-lifecycle/recreating.html

您应该将文本编辑值存储在Bundle中:

protected void onSaveInstanceState (Bundle outState)

http://developer.android.com/reference/android/app/Activity.html#onSaveInstanceState%28android.os.Bundle%29

并从以下位置的savedInstanceState包中恢复它:

protected void onRestoreInstanceState (Bundle savedInstanceState)

http://developer.android.com/reference/android/app/Activity.html#onRestoreInstanceState%28android.os.Bundle%29

[编辑]

实际上android应该使用上述机制保存您的视图内容

答案 1 :(得分:0)

当您转到下一个活动时,请将该值存储在sharedpreferences中,然后再次返回上一个活动时从那里检索它并将其放在edittext中。

答案 2 :(得分:0)

按照简单计划

的建议将其写在代码中
    public class MainActivity extends Activity {

    EditText ed;
    Button bt;
    private String str = "";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ed = (EditText) findViewById(R.id.editText1);
        bt = (Button) findViewById(R.id.button1);



        bt.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent i = new Intent (MainActivity.this, First.class);
                startActivity(i);
            }
        });

    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        str = ed.getText().toString();
    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        ed.setText(str);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

答案 3 :(得分:0)

行。我可以解决我的问题。

我使用startActivityForResult()函数从subActivity获取用户数据并将结果返回到主活动,这样用户的TextEditor中的值在转到activity2之前填充它它没有消失

参考:How to pass integer from one activity to another?

PS。感谢marcin_j回答它作为我的新知识,感谢任何评论和回答