无法在Android中保存parseobject

无法在Android中保存parseobject,android,parse-platform,Android,Parse Platform,请帮忙。我对Android开发和解析非常陌生。我正在尝试创建一个对象列表。因此,我创建了一个名为“listObject”的类,它扩展了“ParseObject”,并试图保存listObject。但当我尝试从Android Emulator添加对象时,出现了此运行时错误: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Object.hashCode()' on a null objec

请帮忙。我对Android开发和解析非常陌生。我正在尝试创建一个对象列表。因此,我创建了一个名为“listObject”的类,它扩展了“ParseObject”,并试图保存listObject。但当我尝试从Android Emulator添加对象时,出现了此运行时错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Object.hashCode()' on a null object reference
            at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:746)
            at com.parse.ParseObject.<init>(ParseObject.java:158)
            at com.parse.ParseObject.<init>(ParseObject.java:121)
            at com.parse.starter.listObject.<init>(listObject.java:10)
            at com.parse.starter.CreateList.post(CreateList.java:75)
            at com.parse.starter.CreateList.access$000(CreateList.java:29)
            at com.parse.starter.CreateList$1.onClick(CreateList.java:59)
            at android.view.View.performClick(View.java:4756)
            at android.view.View$PerformClick.run(View.java:19749)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“int java.lang.Object.hashCode()”
位于java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:746)
在com.parse.ParseObject上。(ParseObject.java:158)
在com.parse.ParseObject上。(ParseObject.java:121)
在com.parse.starter.listObject上。(listObject.java:10)
位于com.parse.starter.CreateList.post(CreateList.java:75)
在com.parse.starter.CreateList.access$000(CreateList.java:29)
位于com.parse.starter.CreateList$1.onClick(CreateList.java:59)
在android.view.view.performClick上(view.java:4756)
在android.view.view$PerformClick.run(view.java:19749)
位于android.os.Handler.handleCallback(Handler.java:739)
位于android.os.Handler.dispatchMessage(Handler.java:95)
位于android.os.Looper.loop(Looper.java:135)
位于android.app.ActivityThread.main(ActivityThread.java:5221)
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
这是我的密码:

public class CreateList extends Activity {

    // UI references.
    private EditText postEditBrand;
    private EditText postEditProduct;
    private EditText postEditPrice;
    private TextView characterCountTextView;
    private Button postButton;

    private int maxCharacterCount = 200;

    private ParseGeoPoint geoPoint;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_create_list);

        Intent intent = getIntent();

        postEditBrand = (EditText) findViewById(R.id.enterBrand);
        postEditProduct = (EditText) findViewById(R.id.enterProduct);

        postButton = (Button) findViewById(R.id.post_button);
        postButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                post();
            }
        });
    }

    private void post () {
        String brand = postEditBrand.getText().toString().trim();
        String product = postEditProduct.getText().toString().trim();

        // Set up a progress dialog
        final ProgressDialog dialog = new ProgressDialog(CreateList.this);
        dialog.setMessage(getString(R.string.progress_post));
        dialog.show();

        // Create a post.
        listObject post = new listObject();

        post.setBrand(brand);
        post.setProduct(product);
        ParseACL acl = new ParseACL();

        // Give public read access
        acl.setPublicReadAccess(true);
        post.setACL(acl);

        // Save the post
        post.saveInBackground(new SaveCallback() {

            @Override
            public void done(com.parse.ParseException e) {
                dialog.dismiss();
                finish();
            }
        });
    }
}

public class listObject extends ParseObject {
    public String getBrand() {
        return getString("brand");
    }

    public void setBrand(String value) {
        put("brand", value);
    }

    public String getProduct() {
        return getString("product");
    }

    public void setProduct(String value) {
        put("product", value);
    }

    public int getPrice() {
        return getInt("price");
    }

    public void setPrice(Integer value) {
        put("price", value);
    }

    public static ParseQuery<listObject> getQuery() {
        return ParseQuery.getQuery(listObject.class);
    }
}
public类CreateList扩展活动{
//用户界面引用。
私人编辑品牌;
私人编辑文本后期编辑产品;
私人编辑价格;
私有文本视图字符CountTextView;
私人按钮postButton;
私有整数maxCharacterCount=200;
私人地质点;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u create\u list);
Intent=getIntent();
postEditBrand=(EditText)findViewById(R.id.enterBrand);
postEditProduct=(EditText)findViewById(R.id.enterProduct);
postButton=(按钮)findViewById(R.id.post_按钮);
setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
post();
}
});
}
私人空缺职位(){
字符串brand=postEditBrand.getText().toString().trim();
字符串product=postEditProduct.getText().toString().trim();
//设置进度对话框
最终ProgressDialog=新建ProgressDialog(CreateList.this);
setMessage(getString(R.string.progress_post));
dialog.show();
//创建一个帖子。
listObject post=新建listObject();
post.setBrand(品牌);
post.setProduct(产品);
ParseACL acl=新的ParseACL();
//提供公共读取权限
acl.setPublicReadAccess(true);
post.setACL(acl);
//救命
saveInBackground(新的SaveCallback(){
@凌驾
public void done(com.parse.parsee){
dialog.dismise();
完成();
}
});
}
}
公共类listObject扩展了ParseObject{
公共字符串getBrand(){
返回getString(“品牌”);
}
公共void setBrand(字符串值){
投入(“品牌”,价值);
}
公共字符串getProduct(){
返回getString(“产品”);
}
公共void setProduct(字符串值){
投入(“产品”,价值);
}
public int getPrice(){
返回getInt(“价格”);
}
公共无效设置价格(整数值){
卖出(“价格”,价值);
}
公共静态ParseQuery getQuery(){
返回ParseQuery.getQuery(listObject.class);
}
}

您忘记了代码中的一些要点:

必须在扩展ParseObject的DAO类中注释类名:

@ParseClassName("ListObject") //THIS
public class listObject extends ParseObject {
public String getBrand() {
    return getString("brand");
}
在初始化解析(应用程序类)之前,必须添加类:

在数据库中调用ParseObject.registerSubclass(listObject.class) 调用Parse.initialize()之前的应用程序构造函数

顺便说一下,您应该使用Java标准来声明类,在您的例子中是ListObject。(大写L)


希望有帮助

没问题!请勾选绿色箭头,标记为已回答!莱昂纳多,你能帮我解决另一个安卓问题吗。