问题描述
我测试的应用程序从parse.com检索数据到我的列表视图
我没有错误在我的code,但上运行的应用程序关闭说:不幸的是应用程序已经停止
这是我的日志猫
I am testing an app to retrieve data to my listview from parse.comI have no errors in my code but on running the app closes saying "unfortunately app has stopped"This is my log cat
FATAL EXCEPTION: AsyncTask #1
11-02 17:14:54.050 13134 13185 E AndroidRuntime Process: com.mycompany.myapp2, PID: 13134
11-02 17:14:54.050 13134 13185 E AndroidRuntime java.lang.RuntimeException: An erroroccured while executing doInBackground()
11-02 17:14:54.050 13134 13185 E AndroidRuntime. at android.os.AsyncTask$3.done(AsyncTask.java:304)
我的doInBackground方法
private class RemoteDataTask extends AsyncTask<Void, Void, Void>
{
@Override
protected Void doInBackground(Void[] p1)
{
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("country");
query.addDescendingOrder("_created_at");
try{
ob = query.find();
}catch (ParseException e) {
Log.e("error", e.getMessage());
e.printStackTrace();
}
return null;
}
我用了这个链接,我的code,因为它是
** parseapplication.java
**parseapplication.java
package com.mycompany.myapp;
import android.app.*;
Import com.parse.*;
public class ParseApplication extends Application
{
@Override
public void onCreate()
{
// TODO: Implement this method
super.onCreate();
Parse.initialize(this, "9MoehuvnUJRKcvF8SL3nbW0slHHJNPJU4ONXGcD5", "kmBoHM4iwdm0YiyeR7aoMlyMgC5oh1oyTIOt34iu");
ParseUser.enableAutomaticUser();
ParseACL defaultACL= new ParseACL();
defaultACL.setPublicReadAccess(true);
ParseACL.setDefaultACL(defaultACL, true);
}
}
主要activity.java
package com.mycompany.myapp;
import android.app.*;
import android.os.*;
import android.util.*;
import android.widget.*;
import com.parse.*;
import java.util.*;
import android.widget.AdapterView.*;
import android.view.*;
import android.content.*;
public class MainActivity extends Activity
{
ListView listview;
List<ParseObject> ob;
ProgressDialog mProgressDialog;
ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState)
{
// TODO: Implement this method
super.onCreate(savedInstanceState);
setContentView(R.layout.listview_main);
new RemoteDataTask().execute();
}
private class RemoteDataTask extends AsyncTask<Void, Void, Void>
{
@Override
protected Void doInBackground(Void[] p1)
{
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("country");
query.addDescendingOrder("_created_at");
try{
ob = query.find();
}catch (ParseException e) {
Log.e("error", e.getMessage());
e.printStackTrace();
}
return null;
}
@Override
protected void onPreExecute()
{
// TODO: Implement this method
super.onPreExecute();
mProgressDialog = new ProgressDialog(MainActivity.this);
mProgressDialog.setTitle("parsetesting");
mProgressDialog.setMessage("LOADING PLEASE WAIT");
mProgressDialog.setIndeterminate(false);
mProgressDialog.show();
}
@Override
protected void onPostExecute(Void result) {
// Locate the listview in listview_main.xml
listview = (ListView) findViewById(R.id.listview);
// Pass the results into an ArrayAdapter
adapter = new ArrayAdapter<String>(MainActivity.this,
R.layout.listview_item);
// Retrieve object "name" from Parse.com database
for (ParseObject country : ob) {
adapter.add((String) country.get("name"));
}
// Binds the Adapter to the ListView
listview.setAdapter(adapter);
// Close the progressdialog
mProgressDialog.dismiss();
// Capture button clicks on ListView items
listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// Send single item click data to SingleItemView Class
Intent i = new Intent(MainActivity.this,
SingleItemView.class);
// Pass data "name" followed by the position
i.putExtra("name", ob.get(position).getString("name")
.toString());
// Open SingleItemView.java Activity
startActivity(i);
}
});
}
}
}
耶得到了解决。正如vishwajeet辛格说。删除应用程序的Java确实并添加parse.initialize(这一点,你,我会,你键)在下面的setContentView主要活动增加的方法...?
感谢vishwajeet辛格
**
推荐答案
编辑:
更改onCreate方法在MainActivity.java
Change your onCreate method in MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState)
{
// TODO: Implement this method
super.onCreate(savedInstanceState);
setContentView(R.layout.listview_main);
Parse.initialize(this, "9MoehuvnUJRKcvF8SL3nbW0slHHJNPJU4ONXGcD5", "kmBoHM4iwdm0YiyeR7aoMlyMgC5oh1oyTIOt34iu");
ParseUser.enableAutomaticUser();
ParseACL defaultACL = new ParseACL();
// If you would like all objects to be private by default, remove this line.
defaultACL.setPublicReadAccess(true);
ParseACL.setDefaultACL(defaultACL, true);
new RemoteDataTask().execute();
}
这是错误:
E / AndroidRuntime(558):了java.lang.RuntimeException:产生的原因你必须
使用之前调用Parse.initialize(背景下,oauthKey,oauthSecret)
解析库。
您需要调用 Parse.initialize(背景下,oauthKey,oauthSecret)在应用程序中所做的任何查询解析之前。这告诉哪个应用是你的服务。您可以找到您解析仪表板的按键。
You need to call Parse.initialize(context, oauthKey, oauthSecret) in your application before you make any queries to Parse. This tells the service which app is yours. You can find the keys on your Parse Dashboard.
本博客文章可能会有所帮助:http://www.michaelevans.org/blog/2013/08/14/tutorial-building-an-android-to-do-list-app-using-parse/
This blog post might be helpful: http://www.michaelevans.org/blog/2013/08/14/tutorial-building-an-android-to-do-list-app-using-parse/
这篇关于错误doInBackground方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!