好吧所以我正在尝试编写应用程序的这一部分,您可以在其中键入三个电话号码以保存在文件中供以后使用。我的旧设置在每个号码的末尾都有一个按钮来保存每个号码。这有点多余而且不顺利。我现在正试图在一个保存按钮下聚集所有三个数字,但每次点击保存它都会崩溃应用程序。
我无法访问手机上的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;
}
答案 0 :(得分:2)
问题是您没有实例化PreferenceManager
在你的oncreate()
中实例化它<强>溶液
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.contactsettings_layout);
prefs = PreferenceManager.getDefaultSharedPreferences(this); //instantiate here
uiBinder();
btnManger();
}
答案 1 :(得分:1)
prefs
变量未初始化。
答案 2 :(得分:1)
您需要初始化SharedPreferences
对象。喜欢:
//in your case only prefs as it has been declared
prefs = this.getSharedPreferences(
"com.yourpackagename", Context.MODE_PRIVATE);