作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 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/
我是一名优秀的程序员,十分优秀!