如何实现AsyncTask我有片段,我应该在行中写些什么
listview = (ListView) ?????? findViewById(R.id.listviewget);如果我把它放进onCreateView
listview = (ListView) veiw.findViewById(R.id.listviewget);我得到了错误的below.All代码工作,因为我已经签入了活动,它从服务器获得数据,但不能在片段中工作。
01-22 21:59:32.850: E/ ArrayAdapter (32155):您必须为android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:上的TextView 01-22 21:59:32.890: e/AndroidRuntime(32155)提供资源ID :主01-22 21:59:32.890: E/AndroidRuntime(32155):java.lang.IllegalStateException: ArrayAdapter要求资源ID为TextView 01-22 21:59:32.890: E/AndroidRuntime(32155):at(32155):在android.widget.ArrayAdapter.getView(ArrayAdapter.java:362) 01-22 21:32.890: E/AndroidRuntime(32155):在android.widget.AbsListView.obtainView(AbsListView.java:2075) 01-22 21:32.890: E/AndroidRuntime(32155):android.widget.ListView.makeAndAddView(ListView.java:2004) 01-22 21:59: 59:59:59:59:59:59:59:59:59:32.890: E/AndroidRuntime(32155):在android.widget.ListView.fillDown(ListView.java:856) 01-22 21:59:32.890: E/AndroidRuntime(32155):在android.widget.ListView.fillFromTop(ListView.java:916) 01-22 21:32.890: E/AndroidRuntime(32155):android.widget.ListView.layoutChildren(ListView.java:1857) 01-22 21:59:32.890: E/AndroidRuntime(32155 )):android.widget.AbsListView.onLayout(AbsListView.java:1905) 01-22 21:59:32.890: E/AndroidRuntime(32155):android.view.View.layout(View.java:11359) 01-22 21:32.890: E/AndroidRuntime(32155):at android.view.ViewGroup.layout(ViewGroup.java:4531) 01-22 21:59:32.890: E/AndroidRuntime(32155):at android.widget.RelativeLayoutandroid.view.ViewGroup.layout(ViewGroup.java:4531) (RelativeLayout.java:925) 01-22 21:32.890: E/AndroidRuntime(32155):android.view.View.layout(View.java:11359) 01-22 21:32.890: E/AndroidRuntime(32155):at RelativeLayout.java:925 01-22 21:59:32.890: E/AndroidRuntime(32155):at android.widget.FrameLayout.onLayout(FrameLayout.java:431) 01-22 21:59:32.890: E/AndroidRuntime(32155):at android.view.View.layout(View.java:11359) 01-22 21:59:32.890: E/AndroidRuntime(32155):at android.view.View.layout 01-22 21:59:32.890: E/AndroidRuntime(32155):at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:801) 01-22 21:59:32android.view.ViewGroup.layout(ViewGroup.java:4531):E/AndroidRuntime(32155):android.view.View.layout(View.java:11359) 01-22 21:32.890: E/AndroidRuntime(32155):at .890 01-22 21:59:32.890: E/AndroidRuntime(32155):at android.widget.FrameLayout.onLayout(FrameLayout.java:431) 01-22 21:59:32.890: E/AndroidRuntime(32155):在android.view.ViewGroup.layout(ViewGroup.java:4531) 01-22 21:32.890: E/AndroidRuntime(32155):at android.view.View.layout 01-22 21:32.890: E/AndroidRuntime(32155):at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628) 01-22 21:59:32.890: E/AndroidRuntime(32155):at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1486) 01-22 21:32.890: E/AndroidRuntime(32155):在android.widget.LinearLayout.onLayout(LinearLayout.java:1399) 01-22 21:32.890: E/AndroidRuntime(32155):at android.view.View.layout(View.java:11359) 01-22 21:59:32.890: E/AndroidRuntime(32155):android.view.ViewGroup.layout(ViewGroup.java:4531) 01-22 21:59: 59:59:59:59:59:59:32.890: E/AndroidRuntime(32155):在android.widget.FrameLayout.onLayout(FrameLayout.java:431) 01-22 21:59:32.890: E/AndroidRuntime(32155):at android.view.View.layout(View.java:11359) 01-22 21:32.890: E/AndroidRuntime(32155):at android.view.ViewGroup.layout(ViewGroup.java:4531) 01-22 21:59:32.890: E/AndroidRuntime(32155):android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1665) 01-22 21:59:32.890: E/AndroidRuntime(32155):android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2695) 01-22 21:32.890: E/AndroidRuntime(32155):android.os.Handler.dispatchMessage(Handler.java:99) 01-22 21:59:32.890: E/AndroidRuntime(32155):at android.os.Looper。循环( android.app.ActivityThread.main(ActivityThread.java:4987) ) 01-22 21:59:32.890: E/AndroidRuntime(32155):at java.lang.reflect.Method.invoke(Method.java:511) 01-22 21:32.890: E/AndroidRuntime(32155):at java.lang.reflect.Method.invokeNative(原生方法) 01-22 21:59:32.890: E/AndroidRuntime(32155):at java.lang.reflect.Method.invoke(Method.java:511) 01-22 21:59:32.890: E/AndroidRuntime(32155):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 01-22 21:32.890: E/AndroidRuntime(32155):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 01-22 21:59:32.890: E/AndroidRuntime(32155):at dalvik.system.NativeStart.main(原生方法) 01-22 21:59: 59:59:59:59:59:59:59:32.890: E/AndroidRuntime(32155):由: java.lang.ClassCastException: android.widget.RelativeLayout无法转换为android.widget.TextView 01-22 21:59:32.890: E/AndroidRuntime(32155):at android.widget.TextView 01-22 21:59:32.890: E/AndroidRuntime(32155):. 39多39
public class MyLibrary extends Fragment {
ListView listview;
List<ParseObject> data;
ProgressDialog mProgressDialog;
ArrayAdapter<String> adapter;
public MyLibrary()
{
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Parse.initialize(getActivity(), "ASD", "ASD");
ParseUser.enableAutomaticUser();
ParseACL defaultACL = new ParseACL();
defaultACL.setPublicReadAccess(true);
ParseACL.setDefaultACL(defaultACL, true);
View view=inflater.inflate(R.layout.getnewlay,container, false);
new GetData().execute();
return view;
}
private class GetData extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
mProgressDialog = new ProgressDialog(getActivity());
mProgressDialog.setTitle("Please wait");
mProgressDialog.setMessage("Getting data...");
mProgressDialog.setIndeterminate(false);
mProgressDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
ParseQuery query = new ParseQuery("ASD");
query.orderByDescending("_created_at");
try {
data= query.find();
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
listview = (ListView) ?????? findViewById(R.id.listviewget);
adapter = new ArrayAdapter<String>(getActivity(),
R.layout.getnewlay);
for (ParseObject name : data) {
adapter.add((String) name.get("name"));
}
listview.setAdapter(adapter);
mProgressDialog.dismiss();
}
}
}发布于 2015-01-22 16:16:34
ArrayAdapter要求资源ID为TextView
意味着R.layout.getnewlay布局包含TextView,但在RelativeLayout内部,因此您可以将任何id分配给TextView,并使用另一个需要TextView id的ArrayAdapter构造函数:
adapter = new ArrayAdapter<String>(getActivity(),
R.layout.getnewlay,R.id.textView_Id);或从xml中删除RelativeLayout布局,并使TextView成为根视图:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
.....
/>如何在onPostExecute方法中从片段布局访问视图:
使用getView方法:
listview = (ListView)getView().findViewById(R.id.listviewget);发布于 2015-01-22 16:16:46
检查一下你的布局。它应该只有TextView作为布局中的父级(甚至没有任何布局,比如线性布局或相对布局)
否则,您可以将android.R.layout.simple_list_item_1替换为R.layout.getnewlay
发布于 2015-01-22 16:20:29
在布局'getnewlay‘中传递TextView的资源ID,类似
adapter = new ArrayAdapter<>(getActivity(), R.layout.getnewlay, R.id.textViewResourceId_in_getnewlay)https://stackoverflow.com/questions/28093400
复制相似问题