gpt4 book ai didi

java - 解析异常 : "You must register this ParseObject subclass before instantiating it."

转载 作者:行者123 更新时间:2023-12-01 12:05:28 25 4
gpt4 key购买 nike

我在 Android Studio 中使用 Parse.com,当我运行此代码时:

public void onClick(View v) {
Log.i(TAG, "Like-button clicked");
ParseUser currentUser = ParseUser.getCurrentUser();
Activity likes = new Activity();
likes.setToUser(photo.getUser());
likes.setFromUser(currentUser);
likes.setType("like");
likes.setPhoto(photo);
ParseACL acl = new ParseACL(currentUser);
acl.setPublicReadAccess(true);
likes.setACL(acl);
likes.saveInBackground(new SaveCallback() {
public void done(ParseException e) {
//....

它在 Activity likes = new Activity(); 行崩溃,并显示 ParseException:“您必须在实例化此 ParseObject 子类之前注册它。”

我的类(class)Activity看起来像这样:

package com.parse.myApp

import com.parse.ParseClassName;
import com.parse.ParseFile;
import com.parse.ParseObject;
import com.parse.ParseUser;

/*
* An extension of ParseObject that makes
* it more convenient to access information
* about a given Photo
*/

@ParseClassName("Activity")
public class Activity extends ParseObject {

public Activity() {
// A default constructor is required.
}

public ParseUser getFromUser(){
return getParseUser("fromUser");
}

public void setFromUser(ParseUser user){
put("fromUser", user);
}

public ParseUser getToUser(){
return getParseUser("toUser");
}

public void setToUser(ParseUser user){
put("toUser", user);
}

public String getType(){
return getString("type");
}

public void setType(String t){
put("type", t);
}

public String getContent(){
return getString("content");
}

public void setContent(String c){
put("content", c);
}

public ParseFile getPhoto(){
return getParseFile("photo");
}

public void setPhoto(ParseFile pf){
put("photo", pf);
}
}

我已经在我的 ApplicationClass 中设置了:

package com.parse.myApp;

import android.app.Application;

import com.parse.Parse;

import com.parse.ParseACL;

import com.parse.ParseFacebookUtils;

import com.parse.ParseInstallation;

import com.parse.ParseObject;

import com.parse.PushService;

public class AnypicApplication extends Application {
static final String TAG = "Panagram";

@Override
public void onCreate() {
super.onCreate();

/*
* In this tutorial, we'll subclass ParseObjects for convenience to
* create and modify Photo objects.
*
* Also, we'll use an Activity class to keep track of the relationships
* of ParseUsers with each other and Photos. Every time a user follows, likes
* or comments, a new activity is created to represent the relationship.
*/
ParseObject.registerSubclass(Photo.class);
ParseObject.registerSubclass(Activity.class);
/*
* Fill in this section with your Parse credentials
*/
Parse.initialize(this, "myKey", "myKey");

// Set your Facebook App Id in strings.xml
ParseFacebookUtils.initialize("373432736168885");


/*
* For more information on app security and Parse ACL:
* https://www.parse.com/docs/android_guide#security-recommendations
*/
ParseACL defaultACL = new ParseACL();

/*
* If you would like all objects to be private by default, remove this
* line
*/
defaultACL.setPublicReadAccess(true);

/*
* Default ACL is public read access, and user read/write access
*/
ParseACL.setDefaultACL(defaultACL, true);

/*
* Register for push notifications.
*/
PushService.setDefaultPushCallback(this, LoginActivity.class);
ParseInstallation.getCurrentInstallation().saveInBackground();
}

}

我的 Manifest.xml 如下所示:

   <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.parse.anypic"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="19" />

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

<permission
android:name="com.parse.anypic.permission.C2D_MESSAGE"
android:protectionLevel="signature" />

<uses-permission android:name="com.parse.anypic.permission.C2D_MESSAGE" />

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

<application
android:name=".AnypicApplication"
android:allowBackup="true"
android:icon="@drawable/anypic_icon"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".HomeListActivity"
android:label="@string/title_activity_home_list" >

<!-- <meta-data -->
<!-- android:name="android.support.PARENT_ACTIVITY" -->
<!-- android:value="android.app.Activity" /> -->
</activity>
<activity
android:name=".NewPhotoActivity"
android:label="@string/title_activity_new_photo" >
</activity>
<activity
android:name=".LoginActivity"
android:label="@string/title_activity_login" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.facebook.LoginActivity"
android:label="@string/app_name" >
</activity>

<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/app_id" />

<service android:name="com.parse.PushService" />

<receiver android:name="com.parse.ParseBroadcastReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>
<receiver
android:name="com.parse.GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />

<!-- IMPORTANT: Change "com.parse.starter" to match your app's package name. -->
<category android:name="com.parse.anypic" />
</intent-filter>
</receiver>

<activity
android:name=".RegisterAcitivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/title_activity_register_acitivity"
android:theme="@style/FullscreenTheme" >
</activity>
</application>

</manifest>

即使我已经设置了 registerSubclass,我每次都会遇到相同的错误。

解决方案

我的问题是我有两个 Activity 类,我做了:ParseObject.registerSubclass(Activity.class);,但 android 不知道它是哪个 Activity 类。于是我删除了其中一个,问题就解决了。

最佳答案

解决方案

我的问题是我有两个 Activity 类,我做了:ParseObject.registerSubclass(Activity.class);,但 android 不知道它是哪个 Activity 类。于是我删除了其中一个,问题就解决了。

关于java - 解析异常 : "You must register this ParseObject subclass before instantiating it.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27658383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com