SharedPreference中的问题

时间:2016-06-21 21:05:12

标签: java android sharedpreferences

当我点击按钮formactivty打开然后保存数据并且我杀死了它从主要活动显示的应用程序后,我有一个主要活动按钮,它没有通过使用共享偏好显示欢迎活动。任何人都可以解决这个问题

主要活动

public class MainActivity extends AppCompatActivity {

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

    public void open(View v) {
        Intent i = new Intent(MainActivity.this,Form.class);
        startActivity(i);
    }
}

FormActivty

public class Form extends Activity {
    SharedPreferences sp;
    public static String Filename= "LoginFile";
    public static String key = "status";
    EditText namee,emaill;
    String Name,Email;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        sp = getSharedPreferences(Filename,MODE_PRIVATE);
        boolean res = sp.getBoolean(key,false);
        if (res) {
            setContentView(R.layout.welcom);
        } else {
            setContentView(R.layout.form);
        }
    }

    public void save(View v) {
        namee = (EditText)findViewById(R.id.name);
        emaill = (EditText)findViewById(R.id.email);

        Name = namee.getText().toString();
        Email = emaill.getText().toString();
        SharedPreferences.Editor ed = sp.edit();
        ed.putBoolean(key,true);
        ed.putString("k1",Name);
        ed.putString("k2",Email);
        ed.commit();
        Intent i = new Intent(this,Welcome.class);
        startActivity(i);
    }
}

欢迎活动

public class Welcome extends Activity {
    SharedPreferences sp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.welcom);
        sp = getSharedPreferences(Form.Filename,MODE_PRIVATE);
        TextView tv= (TextView)findViewById(R.id.text);
        TextView tv1= (TextView)findViewById(R.id.text1);
        String username,email;
        Intent i = getIntent();
        Bundle b = new Bundle();
        b= i.getExtras();
        username = sp.getString("k1","");
        email = sp.getString("k2","");
        tv.setText(username);
        tv1.setText(email);
    }

    public void logout(View v) {
        SharedPreferences.Editor ed = sp.edit();
        ed.putBoolean(Form.key,false);
        ed.commit();
        Intent i = new Intent(this,MainActivity.class);
        startActivity(i);
    }
}

1 个答案:

答案 0 :(得分:0)

MainActivityonCreate()下,应该有一个代码可以检查您的SharedPreference是否为空。如果它是空的,它应该转到Form.class或它不应该做任何事情,因为你在MainActivity中有一个按钮。如果没有,请转到Welcome.class。你几乎就在那里,只需对你的代码进行一些小的调整,你就可以得到它。

public class MainActivity extends AppCompatActivity {
    SharedPreferences sp;
    public static String Filename= "LoginFile";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sp = getSharedPreferences(Filename,MODE_PRIVATE);
        String name = sp.getString("k1", "");
        if(!name.isEmpty()){
            Intent intent = new Intent(MainActivity.this, Welcome.class);
            startActivity(intent);
        }
    }

    public void open(View v) {
        Intent i = new Intent(MainActivity.this,Form.class);
        startActivity(i);
    }
}

如果您注意到此代码,每次应用程序被杀死并再次启动时,它都会检查共享首选项是否为空。如果没有,它将直接转到Welcome.class