使用SharedPreferences从第一个活动的EditText中获取多个数据到第二个活动的TextView

时间:2015-09-19 10:37:18

标签: android android-intent sharedpreferences

第一项活动:

public class MainActivity extends Activity {

    private Button btn;
    private Button btnsbm;
    private EditText et;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn=(Button)findViewById(R.id.button);
        btnsbm=(Button)findViewById(R.id.button2);
        et=(EditText)findViewById(R.id.editText);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences("prefData", MODE_PRIVATE);
                SharedPreferences.Editor editor=sharedPreferences.edit();
                editor.putString("key",et.getText().toString());
                editor.apply();
                Toast.makeText(MainActivity.this, "Data added",Toast.LENGTH_LONG).show();
            }
        });
        gotonextactivity();
    }

    public void gotonextactivity() {
        btnsbm.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(MainActivity.this,Activty_2.class);
                startActivity(intent);
            }
        });
    }
}

4 个答案:

答案 0 :(得分:0)

虽然这个问题已得到解答。我想告诉您,使用lst = ["1","2","3"] lst2 = map(int,lst) print lst2 不是在活动之间传输数据的方式。

来自documentation

  

SharedPreferences类提供了一个通用框架,允许您保存和检索原始数据类型的持久键值对。您可以使用SharedPreferences保存任何原始数据:布尔值,浮点数,整数,长整数和字符串。这些数据将在用户会话中持续存在(即使您的应用程序被终止)。

如果您的要求如此。那么您可以更多地解释一下您选择这种方法的原因。

所有Android开发人员的一个常见做法是在intents中使用额外内容(请查看附加内容下的部分)。

您可以使用putExtras()将数据传递到下一个活动并按this SO answer

中的说明检索它们

答案 1 :(得分:0)

不需要Sharedpreference来完成这项工作,您只需将数据放入Intent并将其置于新活动中即可。 首先编辑您的按钮onClick()就像这样

btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(MainActivity.this,"Data added",Toast.LENGTH_LONG).show();

        Intent intent = new Intent(MainActivity.this,Activty_2.class);
        intent.putExtras("data", et.getText().toString());
        startActivity(intent);
});

然后在您添加的Activty_2 onCreate()方法内

Bundle extras = getIntent().getExtras();
if (extras != null) {
    String value = extras.getString("data"); // this is your text
}
希望它有所帮助。

答案 2 :(得分:0)

你让我的朋友变得困难,你只需要使用意图将数据传递给你的其他活动。

btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(MainActivity.this,SecondActivity.class);
        intent.putString("key",editText1.gettext().toString());
        startActivity(intent);
    }
});

现在从onCreate()中的SecondActivity中获取您的数据:

Intent intent = getIntent();
String data = intent.getString("key");
textView.setText(data);

答案 3 :(得分:-1)

Book.number_of_readers而不是editor.commit();。请给出正确的错误。共享偏好没有填充或问题是别的吗?