如何在Android中调用Activity后保存EditText中的文字?

问题描述 投票:1回答:3

我有2个Activity A和B,在Activity A中有1个EditText和1个Button,Button是用来调用Activity B的。我只是想知道,当用户第一次在EditText中输入一些文本,然后用户调用活动B,之后回到活动A(A > B > Then Back to A),我是否仍然可以有用户输入。

下面是我的活动A(CreateData是活动A)的代码

public class CreateData extends Activity implements OnClickListener{
    private Button buttonAdd;
    private EditText edNama_sma;
    private String nama;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.create_data);
        edNama_sma     = (EditText) findViewById(R.id.nama_sma);
        buttonAdd      = (Button) findViewById(R.id.buttom_add_koordinat);
        buttonAdd.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) 
    {
        nama  = edNama_sma.getText().toString().toUpperCase().trim();
        // TODO Auto-generated method stub
        switch(v.getId())
        {
            case R.id.buttom_add_koordinat:
            Intent c = new Intent(this, ActivityB.class);
            startActivity(c);
            finish();
        }
    }
@Override
public void onResume() {
    super.onResume();

        edNama_sma.setText(edNama_sma.getText());

    }
}
android android-activity android-edittext
3个回答
0
投票

覆盖 onResume() 方法,并在该方法中设置 name 作为文本 EditText 名为 edNama_sma.

@Override
public void onResume() {
super.onResume();

    edNama_sma.setText(nama);

}

所以,整个活动课应该是这样的

public class CreateData extends Activity implements OnClickListener{
    private Button buttonAdd;
    private EditText edNama_sma;
    private String nama;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.create_data);
        edNama_sma     = (EditText) findViewById(R.id.nama_sma);
        buttonAdd      = (Button) findViewById(R.id.buttom_add_koordinat);
        buttonAdd.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) 
    {
        nama  = edNama_sma.getText().toString().toUpperCase().trim();
        // TODO Auto-generated method stub
        switch(v.getId())
        {
            case R.id.buttom_add_koordinat:
            Intent c = new Intent(this, ActivityB.class);
            startActivity(c);

        }
    }

    @Override
    public void onResume() {
        super.onResume();

        edNama_sma.setText(nama);

    }
}

2
投票

当你开始另一个活动时,不要调用finish,这样的话,原来的活动会留在活动堆栈中,编辑文本中的数据仍然会被填充。那么原来的活动将留在活动堆栈中,编辑文本中的数据仍然会被填充.否则你应该使用SharedPreferences来存储任何你需要在离开活动时保留的临时数据。有时,如果设备旋转,它可能会擦掉输入视图的内容,在这种情况下,你需要使用SharedPreferences保存并重新加载它们。

http:/developer.android.comreferenceandroidcontentSharedPreferences.html。

© www.soinside.com 2019 - 2024. All rights reserved.