好吧,我正在尝试编写应用程序的这一部分,您可以在其中输入三个电话号码以保存在文件中以供以后使用。我的旧设置在每个数字的末尾都有一个按钮来保存每个数字。这变得有点多余并且工作不顺利。我现在试图将所有三个数字集中在一个保存按钮下,但每次我点击保存时,应用程序都会崩溃。
由于未知原因,我无法在手机上访问 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/