Android:保存按钮实例

时间:2016-04-18 17:35:24

标签: android

你好我正在研究我的android项目。我创建了一个活动,其中使用了四个按钮,我希望用户选择任何一个。我通过将其他按钮设置为.setClickable(false)来完成此操作。但是当我重新启动或再次重新启动应用程序时,所有按钮都会启用。我希望当用户选择一个按钮时它应该保存它的选择,这样在app的retstart上,用户不会感到困惑。下面是一段代码:

Notifications.class

            package com.mateoj.multiactivitydrawer;

import android.app.Notification;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v7.app.NotificationCompat;
import android.view.MenuItem;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.mateoj.multiactivitydrawer.department.dept_1styeartab;
import com.pushbots.push.Pushbots;

public class notifications extends BaseActivity {
    private WebView webView;

    Button clickButton;
    Button clickButton1;
    Button clickButton2;
    Button clickButton3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Pushbots.sharedInstance().init(this);
        Pushbots.sharedInstance().setCustomHandler(customHandler.class);
        setContentView(R.layout.activity_notifications);
        final SharedPreferences preferences = getSharedPreferences("com.mateoj.multiactivitydrawer", MODE_PRIVATE);
        final SharedPreferences.Editor editor = preferences.edit();

        clickButton = (Button) findViewById(R.id.ncs);
        clickButton1 = (Button) findViewById(R.id.nmech);
        clickButton2 = (Button) findViewById(R.id.nece);
        clickButton3 = (Button) findViewById(R.id.neee);



        clickButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub


                Intent show = new Intent(getApplicationContext(), noti_cse.class);
                Pushbots.sharedInstance().tag("cse");
                Pushbots.sharedInstance().untag("mech");
                Pushbots.sharedInstance().untag("ece");
                Pushbots.sharedInstance().untag("eee");
                editor.putString("session", "cse").commit();
                editor.commit();
                startActivity(show);


            }
        });
        clickButton1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                Intent show = new Intent(getApplicationContext(), noti_mech.class);

                Pushbots.sharedInstance().tag("mech");
                Pushbots.sharedInstance().untag("ece");
                Pushbots.sharedInstance().untag("eee");
                Pushbots.sharedInstance().untag("cse");
                editor.putString("session", "mech").commit();
                editor.commit();

                startActivity(show);


            }
        });
        clickButton2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                Intent show = new Intent(getApplicationContext(), noti_ece.class);

                Pushbots.sharedInstance().tag("ece");
                Pushbots.sharedInstance().untag("mech");
                Pushbots.sharedInstance().untag("eee");
                Pushbots.sharedInstance().untag("cse");
                editor.putString("session", "ec").commit();
                editor.commit();
                startActivity(show);


            }
        });
        clickButton3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                Intent show = new Intent(getApplicationContext(), noti_eee.class);

                Pushbots.sharedInstance().tag("eee");
                Pushbots.sharedInstance().untag("ece");
                Pushbots.sharedInstance().untag("mech");
                Pushbots.sharedInstance().untag("cse");
                editor.putString("session", "eee").commit();
                editor.commit();

                startActivity(show);


            }
        });
        onStartUp();



    }
    private void onStartUp()
    {
        SharedPreferences sharedPreferences = getSharedPreferences("com.mateoj.multiactivitydrawer", Context.MODE_PRIVATE);
        String str = sharedPreferences.getString("session", "");
        if (str.equals("cs")) {
            clickButton.setClickable(true);
            clickButton1.setClickable(false);
            clickButton2.setClickable(false);
            clickButton3.setClickable(false);

        } else if (str.equals("mech")) {
            clickButton.setClickable(false);
            clickButton1.setClickable(true);
            clickButton2.setClickable(false);
            clickButton3.setClickable(false);
        } else if (str.equals("ec")) {
            clickButton.setClickable(false);
            clickButton1.setClickable(false);
            clickButton2.setClickable(true);
            clickButton3.setClickable(false);
        } else if (str.equals("eee")) {
            clickButton.setClickable(false);
            clickButton1.setClickable(false);
            clickButton2.setClickable(false);
            clickButton3.setClickable(true);
        }

    }














  /*  private class MyWebViewClient extends WebViewClient {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }

    }  */



    @Override
    protected boolean useDrawerToggle() {
        return false;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == R.id.action_credits)
            return true;

        if (item.getItemId() == android.R.id.home)
            onBackPressed();

        return super.onOptionsItemSelected(item);
    }


}

那么应该在这里改变什么

3 个答案:

答案 0 :(得分:0)

您可以使用SharedPreferences类来保存用户选择。此视频可以帮助您开始使用 - https://www.youtube.com/watch?v=riyMQiHY3V4。只需将用户选择的按钮保存在具有sharedpreferences类的键值对中即可。重启活动或重新启动只需检查共享首选项实例中的值,然后设置按钮setClickable(true)或setClickable(false)。

编辑:

clickButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
              //same code as above without the setClickable() on buttons
             //remove the button.setClickable(false); for rest of the buttons
             editor.putString("session", "akash").commit();
             editor.commit();
             startActivity(show);   //Start the activity here
       }
}):

对所有点击监听器重复此操作并更改" akash"每个按钮点击监听器的不同(根据需要)。然后使用方法

private void onStartUp(){
  SharedPreferences sharedPreferences = getSharedPreferences("com.mateoj.multiactivitydrawer", Context.MODE_PRIVATE);
  String str=sharedPreferences .getString("session","akash");
  if(str.equals("akash")){
    //set buttons setClickable(true) or setClickable(false)
  } else if(str.equals("..."))     //replace "..." with other strings which can replace "akash"
   //set buttons setClickable(true) or setClickable(false)
 } //continue the else if logic till all conditions are met
} 

调用onStartUp();在onCreate();为按钮设置on click侦听器后。

答案 1 :(得分:0)

您可以做的一件事是保存Button的状态(每当您/用户点击Button时,truefalse保存在SharedPreferences上每次开始Activity setClickable()的值时,都会将SharedPrefernce的结果放入。{/ p>

这是一个选项,但有很多方法可以做到,这是其中之一。

答案 2 :(得分:0)

我不知道您正在使用的这个框架(Pushbots),但我认为您正在伪造检查活动方法onCreate()期间哪个标签保存在Pushbots中,并根据它启用或禁用按钮。您正在Pushbots按钮上保存标签,从不检查保存在哪个标签上以启用或禁用按钮。

我建议您直接使用SharedPreferences而不是使用此框架,即使我不知道。 SharedPreferences使用起来非常简单,我认为没有任何理由使用框架。