Java 不幸的是,[应用程序]已停止!我做错了什么?

Java 不幸的是,[应用程序]已停止!我做错了什么?,java,android,arrays,android-activity,sharedpreferences,Java,Android,Arrays,Android Activity,Sharedpreferences,这是我在StackExchange的第一篇文章。 我是一个非常初级的Android开发者。我正在制作一个用于保存数组(列表)的应用程序。但不幸的是,当我运行我的应用程序时,它显示{不幸的是,商店已经停止!}。我对这个错误非常熟悉,很多时候我也能克服它。但这一次,我不知道我做错了什么。我的代码看起来很完美,但不知何故一直显示错误。 我正在下面粘贴我的java代码。请通读我的代码,指出我的错误!请~ AddItem.java package com.rcube.shop; import java.u

这是我在StackExchange的第一篇文章。 我是一个非常初级的Android开发者。我正在制作一个用于保存数组(列表)的应用程序。但不幸的是,当我运行我的应用程序时,它显示{不幸的是,商店已经停止!}。我对这个错误非常熟悉,很多时候我也能克服它。但这一次,我不知道我做错了什么。我的代码看起来很完美,但不知何故一直显示错误。 我正在下面粘贴我的java代码。请通读我的代码,指出我的错误!请~

AddItem.java

package com.rcube.shop;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class AddItem extends Activity{
SharedPreferences store = PreferenceManager.getDefaultSharedPreferences(getApplication());
SharedPreferences.Editor edit = store.edit();
ArrayList<String> itemarray = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.add_item);
    Button addnewitem = (Button) findViewById(R.id.addnewitem);
    final EditText getitemname = (EditText)findViewById(R.id.getitem);

    addnewitem.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            String newitemname = getitemname.getText().toString();
            if(newitemname.length()!=0){
                itemarray.add(newitemname);
                Set<String> itemset = new HashSet<String>(itemarray);
                edit.putStringSet("items_set", itemset);
                edit.commit();
            }else{
                Toast.makeText(AddItem.this, "Write Item name before submitting!", Toast.LENGTH_LONG).show();               
            }
        }
    });


}


}
package com.rcube.shop;
导入java.util.ArrayList;
导入java.util.HashSet;
导入java.util.Set;
导入android.app.Activity;
导入android.content.SharedReferences;
导入android.os.Bundle;
导入android.preference.PreferenceManager;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.Toast;
公共类附加项扩展活动{
SharedReferences store=PreferenceManager.GetDefaultSharedReferences(getApplication());
SharedReferences.Editor edit=store.edit();
ArrayList itemarray=新的ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.add_项);
按钮addnewitem=(按钮)findViewById(R.id.addnewitem);
最终EditText getitemname=(EditText)findViewById(R.id.getitem);
addnewitem.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图arg0){
//TODO自动生成的方法存根
字符串newitemname=getitemname.getText().toString();
如果(newitemname.length()!=0){
添加(newitemname);
Set itemset=新HashSet(itemarray);
编辑.putStringSet(“items\u set”,itemset);
edit.commit();
}否则{
Toast.makeText(AddItem.this,“提交前写入项目名称!”,Toast.LENGTH_LONG.show();
}
}
});
}
}
请告诉我我做错了什么。我还在android清单中添加了新的android活动,所以这个错误不是因为这个。 再次感谢!
和平~

您似乎正在通过
getApplicationConnect()获得NPE

setContentView

SharedPreferences store = PreferenceManager.getDefaultSharedPreferences(getApplication());
SharedPreferences.Editor edit = store.edit();
在此之前,你不会了解上下文


希望这有帮助。

在findViewById之后,将这两行放在
onCreate()中,然后您可以使用上下文

SharedPreferences store = PreferenceManager.getDefaultSharedPreferences(getApplication());
SharedPreferences.Editor edit = store.edit();

我认为您的SharedReference和编辑器分配得太早。请将手机置于调试模式。当它崩溃时,它会告诉你导致问题的原因。确保该应用程序正在调试中(在“设备”列表中,它旁边有一个小的绿色bug)谢谢。。。!它奏效了…真的很感激!但你能解释一下我做错了什么吗??为什么一开始它不起作用@user3789667
setContentView
呈现xml,之后可以获取应用程序上下文。您试图引用
setContentView
之前的应用程序上下文。所以它抛出了空指针异常。请参阅更多:)@user3789667如果问题已解决,请将答案标记为正确:)以便将其从未答复列表中删除还有一件事…每次单击“添加新”按钮,它都会重置我的数组列表!我想在数组中保留旧字符串,但每当我添加新项目时,它会重置我的数组列表,然后它只显示新项目!这个错误只存在于这个代码中,我已经检查了其他代码。将不得不检查。明天从五点开始。现在就用手机。