与Intent putExtra的SharedPreferences

时间:2017-05-01 00:13:27

标签: android-intent sharedpreferences android-studio-2.2

我刚开始学习android studio。我想制作一个简单的应用程序,用户可以输入地点的名称,以及他想在哪一天访问该地点。

我想使用intent putExtra将地名和日期发送到secondActivity(PLAN)。 之后在secondActvity(PLAN)中我想使用SharedPreferences,以便可以保存地名和日期。如果用户选择其他地点和日期,则可以将其添加到保存的数据中。

这是我的代码: DANAMALL(FirstActvity.java)

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;


public class DANAMALL extends AppCompatActivity {
    public static final String TAG_PLACE = "keyplace";
    public static final String TAG_DAY = "keyDay";

    Button b1;
    EditText etpName;
    EditText etd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dana_mall);

        etpName = (EditText) findViewById(R.id.PLACE);
        etd = (EditText) findViewById(R.id.DAY);
        b1 = (Button)findViewById(R.id.add);
        b1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Intent intent = new Intent(DANAMALL.this, PLAN.class);
                intent.putExtra(TAG_PLACE, etpName.getText().toString());
                intent.putExtra(TAG_DAY, etd.getText().toString());
                startActivity(intent);

            }
        });}}

    

PLAN(secondActvity.java):

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;


public class PLAN extends Activity {
    TextView txt;
    Button b1;
    SharedPreferences plan ;
    public static final String TAG_PLACE = "keyplace";
    public static final String TAG_DAY = "keyDay";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.plan);

        b1 = (Button)findViewById(R.id.show);
        b1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
        TextView txt = (TextView) findViewById(R.id.txtv);
        Intent intent = getIntent();
        String place = intent.getStringExtra(TAG_PLACE );
        String Day = intent.getStringExtra(TAG_DAY);

                plan=getSharedPreferences("savekey",MODE_PRIVATE);
                SharedPreferences.Editor edit=plan.edit();
                edit.putString("keyplace",place);
                edit.putString("keyday",Day);
                edit.commit();
                Toast.makeText(getBaseContext(),
                        "YOUR PLAN SAVED :) ", Toast.LENGTH_LONG).show();
            }
        });
        b1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                plan = getSharedPreferences("savekey", MODE_PRIVATE);
                String place = plan.getString("keyplace", "");
                String Day = plan.getString("keyday", "");

                String msg = "VISIT:" + place + "DAY :" + Day;
                b1.setText(msg);

            }
    }); }}

我的问题:传递后,secondActvity中没有数据 ..... SharedPreferences未显示已保存的数据。

我很想知道如何解决这个问题:)

1 个答案:

答案 0 :(得分:-2)

使用意图putextra类型

String namestr = text a passer;

Intent intent=new Intent(MainActivity.this,you_activity.class);
            intent.putExtra("code",namestr);
            startActivity(intent);

并在其他活动中恢复

String namestr = getIntent().getStringExtra("code");