由于没有初始化视图,我的应用程序崩溃了

时间:2014-02-03 10:28:10

标签: android

在这里,我试图调用setText方法,但由于一些初始化问题,我的应用程序正在崩溃。

EditText edittext;
    SharedPreferences settings;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        image =(ImageView) findViewById(R.id.imageView1);
        image.setImageResource(R.drawable.logo);
        settings= getSharedPreferences(PREFS_NAME,Context.MODE_PRIVATE);
        if(settings.contains("sharedString")){
        String returnString=settings.getString("sharedString","Couldn't load the data");
        edittext.setText(returnString);
        }

    }

3 个答案:

答案 0 :(得分:2)

edittext未初始化。在onCreate初始化它。

onCreate你有

edittext.setText(returnString); // not initialized in onCreate

你有

edittext =(EditText)findViewById(R.id.edit_message); // initialized in sendMessage
sendMessage中的

。因此,您可能会在初始化之前将文本设置为edittext

答案 1 :(得分:0)

请尝试使用该代码。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    image =(ImageView) findViewById(R.id.imageView1);
    image.setImageResource(R.drawable.logo);
    edittext = (EditText)findViewById(R.id.edittext);        
    settings= getBaseContext().getSharedPreferences(PREFS_NAME,Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = settings.edit();
    editor.putString("sharedString", "Shared Preference Data");
    editor.commit();
    String returnString=settings.getString("sharedString","Couldn't load the data");
    edittext.setText(returnString);
}

在使用代码之前,先看一下共享的Preferences及其示例。

SharedPreference

SharedPreferences Example

希望它应该有效。请让我知道。如果它不起作用,请告诉我你想要做什么。

答案 2 :(得分:0)

这是一个非常常见的错误..我应该在通过

调用方法之前初始化editText

edittext =(EditText)findViewById(R.id.edit_message);