【问题标题】:Android How to keep value in TextEditor when go to another ActivityAndroid 转到另一个 Activity 时如何在 TextEditor 中保持价值
【发布时间】:2014-07-02 09:24:05
【问题描述】:

我有两个安卓活动。 Activity1 是一个输入表单。在这个Activity 中有一个manyTextEditor 和ImageView。但是许多TextEditor中的一个需要去Activity2填充数据并将数据返回给Activity1。

但是当用户返回到 Activity1 时,用户的 TextEditor 中的一个值在转到 Activity2 之前已经填充了它。

当转到另一个 Activity 时如何保持 TextEditor 的值。

感谢您的任何想法。

【问题讨论】:

  • 创建一个Constant class 并创建String variable 并将此值存储在其中并在您的onResume() 活动并保存在onPause() 时再次加载此值

标签: android android-intent android-activity


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    这是官方指南:

    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 应该使用上述机制保存您的视图内容

    【讨论】:

      【解决方案3】:

      按照简单计划的建议用代码写下来

          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;
          }
      
      }
      

      【讨论】:

        【解决方案4】:

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

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

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

        PS。感谢 marcin_j 将其作为我的新知识回答并感谢您的任何评论和回答

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-12-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多