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

时间:2014-06-14 22:56:58

标签: 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;

}

3 个答案:

答案 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);