2013-07-18 128 views
1

我正在做這個程序,需要用戶名才能運行。在設置中,意圖工作正常,直到我添加共享首選項代碼。我可能會把它添加到錯誤的地方。否則,意圖工作得很好。此外,共享首選項不會保存字符串。它不斷崩潰。有任何想法嗎?SharedPreferencs崩潰程序

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(); 

} 




} 

回答

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提出的。新的更新代碼被添加。

+0

謝謝,但SharedPreferences沒有保存名稱。 – Nebraska

0

您正在創建一個editText並僅提供一個提示,然後試圖從onCreate()中獲取所有內容。 當用戶單擊保存時,您需要從editText獲取文本。 所以試試吧

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

在onClickListener。

否則你試圖從空的editText獲得一個字符串。