簡體   English   中英

無法在Android中保存parseobject

[英]Unable to save parseobject in Android

請幫忙。 我是Android開發和Parse的新手。 我正在嘗試創建對象列表。 因此,我創建了一個名為“ listObject”的類,該類擴展了“ ParseObject”,並且試圖保存listObjects。 但是,當我嘗試從Android模擬器添加對象時,出現此運行時錯誤。

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)

這是我的代碼:

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);
    }
}

您忘記了代碼中的一些要點:

您必須在擴展ParseObject的DAO類中注釋類名:

@ParseClassName("ListObject") //THIS
public class listObject extends ParseObject {
public String getBrand() {
    return getString("brand");
}

您必須在初始化Parse(應用程序類)之前添加您的類:

在調用Parse.initialize()之前,請在您的Application構造函數中調用ParseObject.registerSubclass(listObject.class)。

在這里檢查文檔

順便說一句,您應該使用Java標准來聲明類(在您的情況下為ListObject)。 (大寫L)

希望能幫助到你 !

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM