java - OnclickListener 尝试将多个变量保存到常量文件时崩溃

标签 java android sharedpreferences

好吧,我正在尝试编写应用程序的这一部分,您可以在其中输入三个电话号码以保存在文件中以供以后使用。我的旧设置在每个数字的末尾都有一个按钮来保存每个数字。这变得有点多余并且工作不顺利。我现在试图将所有三个数字集中在一个保存按钮下,但每次我点击保存时,应用程序都会崩溃。

由于未知原因,我无法在手机上访问 logcat,它可以很好地链接到 ADB,但它不会靠近 logcat...我稍后会发布另一个有关此问题的问题。

这是我现在的代码:

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class contacts extends Activity {

EditText num1, num2, num3;
Button saveNums;
Context c = this;
public static String filename = "sharedString";
SharedPreferences prefs;

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

public void uiBinder(){
    num1 = (EditText) findViewById(R.id.num1);
    num2 = (EditText) findViewById(R.id.num2);
    num3 = (EditText) findViewById(R.id.num3);
    saveNums = (Button) findViewById(R.id.saveICEBtn);
}

public void btnManger(){
    saveNums.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //Contact 1 Code
            String num1String = num1.getText().toString();
            Long longNum1 = Long.parseLong(num1String);
            SharedPreferences.Editor editor = prefs.edit();
            prefs.edit().putLong(constants.num1, longNum1).commit();

            String num2String = num2.getText().toString();
            Long longNum2 = Long.parseLong(num1String);
            SharedPreferences.Editor editor2 = prefs.edit();
            prefs.edit().putLong(constants.num2, longNum2).commit();

            String num3String = num3.getText().toString();
            Long longNum3 = Long.parseLong(num1String);
            SharedPreferences.Editor editor3 = prefs.edit();
            prefs.edit().putLong(constants.num3, longNum3).commit();

            Toast.makeText(c, "Contact's have been saved", Toast.LENGTH_LONG)
                    .show();
        }
    });
}
}

这是它们要发送到的文件:

import android.content.SharedPreferences;

public class constants {
public static String PREF_NAME = "sharedString";
public static String ICEnum1 = "num1";
public static String ICEnum2 = "num2";
public static String ICEnum3 = "num3";
SharedPreferences prefs;

}

最佳答案

问题是您没有实例化您的 PreferenceManager

在 oncreate() 中实例化它

解决方案:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.contactsettings_layout);
prefs = PreferenceManager.getDefaultSharedPreferences(this); //instantiate here
uiBinder();
btnManger();
}

关于java - OnclickListener 尝试将多个变量保存到常量文件时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24225026/

相关文章:

java - 无法获取 fragment 中保存的共享首选项

java - Spring WebsecurityConfig 在每个请求中调用过滤器

java - 为什么我的@Transactional方法在测试时没有回滚?

android - 用 wrap_content 剪辑它的内容来约束布局

android - 在动画之前隐藏 ImageView

android - 从服务访问共享首选项

flutter 一次介绍屏幕?

java - ClassNotFoundException : org. apache.commons.javaflow.core.StackRecorder

java - 如何找到球体上点和线之间的最小距离

java - Android 应用程序 Activity