SharedPreferences崩溃了程序

时间:2013-07-18 20:43:07

标签: java android debugging android-debug

我正在制作需要用户名才能运行的程序。在设置中,意图正常工作,直到我添加共享首选项代码。我可能把它添加到了错误的地方。否则意图工作得非常好。共享首选项也不保存字符串。它一直在崩溃。有什么想法吗?

package com.XXX.XXX;

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

public class Settings extends Activity{

EditText nameXML;
SharedPreferences filename;
public  String name;
String filenamename = "nameFile";
Button save = (Button) findViewById(R.id.button1);

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_settings);
    nameXML = (EditText) findViewById(R.id.editText1);
    filename = getSharedPreferences(filenamename,0);
    String username = filename.getString("nameString", "Master Traders");
    nameXML.setHint(username);
    name = nameXML.getText().toString();
    save.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Editor nameEditor = filename.edit();
            nameEditor.putString("nameString", name);
            nameEditor.commit();
        }
    });
}
@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();

}




}

2 个答案:

答案 0 :(得分:1)

Button save = (Button) findViewById(R.id.button1);

更改为:

    Button save;


    @Override
    protected void onCreate(Bundle savedInstanceState) {

        save  = (Button) findViewById(R.id.button1);//this line is before onclicklistener.
 save.setOnclickListner(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            name = nameXML.getText().toString(); 
            Editor nameEditor = filename.edit();
            nameEditor.putString("nameString", name);
            nameEditor.commit();
        }
    });
    }

你应该发布logcat进一步看看问题是什么。但最有可能的原因是@Reid提出的建议。添加了新的更新代码。

答案 1 :(得分:0)

您正在创建一个editText并仅为其提供提示,然后尝试从onCreate()中获取所有内容。 当用户单击“保存”时,您需要从editText获取文本。 所以试试

name = nameXML.getText().toString();

在onClickListener中。

否则你试图从空的editText中获取一个字符串。