Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我的应用程序因未初始化视图而崩溃_Android - Fatal编程技术网

Android 我的应用程序因未初始化视图而崩溃

Android 我的应用程序因未初始化视图而崩溃,android,Android,在这里,我试图调用setText方法,但由于一些初始化问题,我的应用程序崩溃了 EditText edittext; SharedPreferences settings; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_mai

在这里,我试图调用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);
        }

    }

请尝试使用代码

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);
}
在使用代码之前,首先查看共享首选项及其示例


希望它能起作用。请让我知道。如果它不工作意味着告诉我你到底想做什么

未初始化编辑文本。在创建时初始化它

onCreate
中,您有

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

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

发送消息中
。因此,您可能在文本初始化之前就将其设置为edittext,这是一个非常常见的错误。。我应该在调用editText的方法之前初始化它


edittext=(edittext)findViewById(R.id.edit_消息)

调试不能仅仅通过思考来工作。在调用
edittext.setText
方法之前,请发布您的日志猫。您正在初始化
edittext
的位置?@ρ∑ѕρє:将其打包成一个答案,我将进行投票。我已上载完整的代码。请查看。!post
logcat
output.yeas先生,我将设置变量声明为public..您正在谈论将其声明为本地变量。它真的有什么不同吗?您添加的代码是settings=getSharedReferences(PREFS\u NAME,Context.MODE\u PRIVATE);而不是settings=getBaseContext().getSharedReferences(PREFS\u NAME,Context.MODE\u PRIVATE);我不知道您是否创建了edittext。但是您正在尝试将文本设置为edittext.setText(returnString);如果未创建edittext,则edittext表示创建edittext=(edittext)findViewById(R.id.edittext);然后是edittext.setText(returnString);