Android 我的应用程序因未初始化视图而崩溃
在这里,我试图调用setText方法,但由于一些初始化问题,我的应用程序崩溃了Android 我的应用程序因未初始化视图而崩溃,android,Android,在这里,我试图调用setText方法,但由于一些初始化问题,我的应用程序崩溃了 EditText edittext; SharedPreferences settings; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_mai
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
的位置?@ρ∑ѕρє:将其打包成一个答案,我将进行投票。我已上载完整的代码。请查看。!postlogcat
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);