记住我在Android应用程序中的按钮

时间:2017-09-10 22:42:40

标签: javascript android plugins login sharedpreferences

我最近为我一直在努力的Android应用创建了一个新的插件。这个插件需要使用一个我似乎无法正常工作的记忆功能。在我的代码中,我已指定在顶部使用共享属性和字符串传递。

View thisScreensView = null;

String errormessage = "";
String errormessageTextColor = "";
String errormessageText = "";
String rememberTextText = "";
String rememberTextTextColor = "";
String voucherTextfieldPlaceholder = "";
String voucherTextfieldSecureTextEntry = "";
boolean voucherTextfieldSecureTextEntryBool = false;
String iphoneImage = "";
String ipadImage = "";
String errormessageInvalid = "";
String errormessageRemember = "";

private TextView errormessageTextView = null;
private EditText voucherTextfieldEditText = null;
private ImageView imageView = null;
private Button submitButton = null;
private Switch rememberSwitch = null;

private Drawable myHeaderImageDrawable = null;
private String alphaImage = "", pass;
private static BT_item screenObjectToLoad = null;
SharedPreferences sharedpreferences;

我让它使用以下代码将变量pass分配到指定的文本框中:

voucherTextfieldEditText.setVisibility(View.VISIBLE);

    rememberSwitch = (Switch) thisScreensView.findViewById(R.id.rememberSwitch);
    // set the switch to ON
    rememberSwitch.setText(errormessageRemember);
    rememberSwitch.setChecked(true);
    // attach a listener to check for changes in state
    rememberSwitch.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

            if (isChecked) {
                BT_debugger.showIt(fragmentName + ":rememberSwitch is ON");
                // switchStatus.setText("Switch is currently ON");

                //voucherTextfieldEditText.setText(pref.getString(pass, null));

            } else {
                BT_debugger.showIt(fragmentName + ":rememberSwitch is OFF");
                // switchStatus.setText("Switch is currently OFF");
            }

        }
    });

    // check the current state before we display the screen
    if (rememberSwitch.isChecked()) {
        BT_debugger.showIt(fragmentName + ":rememberSwitch is ON");
        // switchStatus.setText("Switch is currently ON");
        //voucherTextfieldEditText.setText(pass);
        if (voucherTextfieldEditText!=null) {
            //voucherTextfieldEditText.setText(sharedPreferences.getString(pass, ""));
        }

        if (pass != null) {

            String textfield = sharedpreferences.getString("PASS", pass);
            //voucherTextfieldEditText.setText(sharedPreferences.getString("PASS", pass));
            voucherTextfieldEditText.setText(textfield);
        }
    }
    else {
        BT_debugger.showIt(fragmentName + ":rememberSwitch is OFF");
        // switchStatus.setText("Switch is currently OFF");
    }

    //
    // submit click listener..

    submitButton = (Button) thisScreensView.findViewById(R.id.submitButtonVoucher);
    submitButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            launchScreen(voucherTextfieldEditText.getText().toString());
        }

    });

    // return the layout file as the view for this screen..
    return thisScreensView;

}// onCreateView...

然后我设置共享首选项字符串" PASS"用这行代码:

if (loadScreenNickname.length() > 1 && !loadScreenNickname.equalsIgnoreCase("none")) {

                // before we launch the next screen...
                if (!rememberSwitch.isChecked()) {
                    voucherTextfieldEditText.setText("");
                }

                if (rememberSwitch.isChecked()){
                    //voucherTextfieldEditText.setText("");

                    //editor.putString(pass, voucherTextfieldEditText.getText().toString().trim());
                    //editor.apply();

                    pass = voucherTextfieldEditText.getText().toString();



                    SharedPreferences.Editor editor = sharedpreferences.edit();
                    editor.putString("PASS", pass);
                    editor.apply();


                }
                errormessageTextView.setVisibility(View.GONE);
                errormessageTextView.invalidate();

                //loadScreenObject(null, thisScreen);
                try {
                    loadScreenWithNickname(loadScreenNickname);

                    foundIt = 1;

                } catch (Exception ex){
                    Log.e ("eTutorPrism Error", "Caught this exception " + ex);
                    ex.printStackTrace();
                }
                break;
            }
        }

然而,无论我退出并重新启动应用程序,即使选中了“记住我”按钮,它也不会记住之前的值,并且应用程序因空值而最终崩溃。除了记住我之外,代码中的其他所有内容都有效。如果有人有任何想法我可以使用它们?

1 个答案:

答案 0 :(得分:0)

您尚未初始化sharedPreference。尝试初始化它。

 SharedPreferences sharedPreferences=getSharedPreferences("myPref",MODE_PRIVATE);