当我向 Parse 提交新帖子时应用程序崩溃
App crash when I submit a new post to Parse
这是我的应用程序崩溃的唯一地方,也是更重要的功能之一
LogCat告诉我:
java.lang.IllegalArgumentException: You must create this type of ParseObject using ParseObject.create() or the proper subclass.
at line 37.
我尝试了 ParseObject.create()
但这只会导致更多问题(我可能做错了)。我应该如何编码?
这是我的 newPost 类:
public class newPost extends Activity {
private Button addButton;
private TextView postView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.newpost);
postView = ((EditText) findViewById(R.id.postView));
addButton = ((Button) findViewById(R.id.addButton));
addButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//line 37 Below
ParseObject post = new ParseObject("Posts");
post.put("content", postView);
post.saveInBackground(new SaveCallback () {
@Override
public void done(ParseException e) {
if (e == null) {
setResult(RESULT_OK);
finish();
} else {
Toast.makeText(getApplicationContext(),
"Error saving: " + e.getMessage(),
Toast.LENGTH_SHORT)
.show();
}
}
});
}
});
}
替换此行
ParseObject post = new ParseObject("Posts");
有了这个
ParseObject post = ParseObject.create("Posts");
在我的例子中,我不得不删除模型中的“@ParseClassName”注释 class。我的理解是,如果我有一个解析模型 class 'Posts' 并且我在应用程序中调用 'registerSubclass(yourclassname)',那么我只需要
Post obj = new Post();
您可能在 Application
class 中初始化 Parse 时犯了一个错误。或者忘记将 android:name=".YourApplicationClass"
放入您的清单文件中。
确保您已在 Application.java class 初始化 Parse 的地方添加以下行
ParseObject.registerSubclass(Message.class);
我收到此错误是因为我忘记在我的应用程序扩展中将我的解析 class 注册为子class:
public class App extends Application
{
@Override
public void onCreate()
{
super.onCreate();
App application = this;
ParseObject.registerSubclass(Posts.class); // <-- This is what you need
Parse.enableLocalDatastore(this);
Parse.initialize(new Parse.Configuration.Builder(getApplicationContext())
.applicationId(EnvironmentConfig.appID)
.server(EnvironmentConfig.serverName)
.enableLocalDataStore()
.build());
ParseInstallation.getCurrentInstallation().saveInBackground();
}
}
这是我的应用程序崩溃的唯一地方,也是更重要的功能之一
LogCat告诉我:
java.lang.IllegalArgumentException: You must create this type of ParseObject using ParseObject.create() or the proper subclass. at line 37.
我尝试了 ParseObject.create()
但这只会导致更多问题(我可能做错了)。我应该如何编码?
这是我的 newPost 类:
public class newPost extends Activity {
private Button addButton;
private TextView postView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.newpost);
postView = ((EditText) findViewById(R.id.postView));
addButton = ((Button) findViewById(R.id.addButton));
addButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//line 37 Below
ParseObject post = new ParseObject("Posts");
post.put("content", postView);
post.saveInBackground(new SaveCallback () {
@Override
public void done(ParseException e) {
if (e == null) {
setResult(RESULT_OK);
finish();
} else {
Toast.makeText(getApplicationContext(),
"Error saving: " + e.getMessage(),
Toast.LENGTH_SHORT)
.show();
}
}
});
}
});
}
替换此行
ParseObject post = new ParseObject("Posts");
有了这个
ParseObject post = ParseObject.create("Posts");
在我的例子中,我不得不删除模型中的“@ParseClassName”注释 class。我的理解是,如果我有一个解析模型 class 'Posts' 并且我在应用程序中调用 'registerSubclass(yourclassname)',那么我只需要
Post obj = new Post();
您可能在 Application
class 中初始化 Parse 时犯了一个错误。或者忘记将 android:name=".YourApplicationClass"
放入您的清单文件中。
确保您已在 Application.java class 初始化 Parse 的地方添加以下行
ParseObject.registerSubclass(Message.class);
我收到此错误是因为我忘记在我的应用程序扩展中将我的解析 class 注册为子class:
public class App extends Application
{
@Override
public void onCreate()
{
super.onCreate();
App application = this;
ParseObject.registerSubclass(Posts.class); // <-- This is what you need
Parse.enableLocalDatastore(this);
Parse.initialize(new Parse.Configuration.Builder(getApplicationContext())
.applicationId(EnvironmentConfig.appID)
.server(EnvironmentConfig.serverName)
.enableLocalDataStore()
.build());
ParseInstallation.getCurrentInstallation().saveInBackground();
}
}