【问题标题】:Remember click in Android记住在Android中点击
【发布时间】:2014-03-15 14:36:13
【问题描述】:

我创建了一个应该只显示一次的活动。在这个 Activity 中,我添加了一个按钮,单击它的关闭,应用程序再次启动时将不再重新打开。我想过使用 SharedPreferences,但没有得到想要的结果。

我在 Shared 中记住了一个数据:

@Override
public void onClick(View v) {
    switch (v.getId()) {

    case R.id.button1:
        SharedPreferences userDetails = getSharedPreferences("entrato", MODE_PRIVATE);
        Editor edit = userDetails.edit();
        edit.clear();
        edit.putString( "entrato", "entra" );
        edit.commit();
        this.finish();
        break;  

}
}

然后,在上一个活动的 OnCreate() 中调用 Shared,如果数据存在,请不要打开活动:

    //remember click
    SharedPreferences userDetails = getSharedPreferences("entrato", MODE_PRIVATE);
    String  valore = userDetails.getString("entrato", "");
    if (valore.equals("entra")){
        return;
    }else{
    Intent intent = null;
    intent = new Intent(this, Benvenuto.class); 
    startActivity(intent);

【问题讨论】:

  • 你想要的结果是什么?你没有得到 String valore 的价值吗?
  • 没错,我没有得到值然后再次打开活动。

标签: android button android-activity


【解决方案1】:

像这样创建共享偏好类:

public class MyPreference {

    private static final String APP_SHARED_PREFS = "myPref"; 
    private SharedPreferences   appSharedPrefs;
    private Editor              prefsEditor;


    public MyPreference(Context context) {
        this.appSharedPrefs = context.getSharedPreferences(APP_SHARED_PREFS, Activity.MODE_PRIVATE);
        this.prefsEditor = appSharedPrefs.edit();
    }



    public boolean loadServices(String servicName) {
        return appSharedPrefs.getBoolean(servicName, false);
    }



    public void saveServices(String servicName, boolean isActivated) {
        prefsEditor.putBoolean(servicName, isActivated);
        prefsEditor.commit();
    }

}

然后 Oncreate 活动检查服务是否存在,因此不会显示并退出。

 public static MyPreference  myPref = new MyPreference(this);

if(myPref.loadService("this is not first time")){

thisActivity.finish();

}else {

// so it's  first time and you can do what ever you want to do

}

然后继续点击事件并像这样保存服务。

 public static MyPreference  myPref = new MyPreference(this);
 myPref.saveService("this is not first time");

【讨论】:

    【解决方案2】:

    试试这个代码

    // save string 
    static public boolean setPreference(Context c, String value, String key) {
        SharedPreferences settings = c.getSharedPreferences(PREFS_NAME, 0);
        settings = c.getSharedPreferences(PREFS_NAME, 0);
        SharedPreferences.Editor editor = settings.edit();
        editor.putString(key, value);
        return editor.commit();
    }
    
    // retrieve String
    static public String getPreference(Context c, String key) {
        SharedPreferences settings = c.getSharedPreferences(PREFS_NAME, 0);
        settings = c.getSharedPreferences(PREFS_NAME, 0);
        String value = settings.getString(key, "");
        return value;
    }
    

    【讨论】:

      【解决方案3】:

      我有四项活动

      1. 飞溅
      2. 有 2 个按钮和 1 个复选框(记住我) 3 & 4. 另一个活动

      如果我使用复选框选中记住我选项,那么我必须记住我点击的按钮,然后在下次启动时直接启动第三个或第四个活动。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-23
        • 2013-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-24
        • 1970-01-01
        相关资源
        最近更新 更多