我正在尝试在AsyncTask中的onPreExecute方法中更改文本视图,但是我一直在获得Null Point Exception。任何帮助或替代方案将不胜感激。
公共类FragmentOne扩展了SherlockFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
new LongOperation().execute("");
View view = inflater.inflate(R.layout.fragmentone, container, false);
return view;
}
private class LongOperation extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
TextView txt = (TextView) getView().findViewById(R.id.textView1);
txt.setText("\nLoading...");
}
// etc etc etc
}
}
答案 0 :(得分:1)
onPreExecute()
返回之前将调用 execute()
。因此,getView()
中的onPreExecute()
将返回null
,因为您还没有夸大View
,更不用说从onCreateView()
返回了它。
请:
onPreExecute()
AsyncTask
findViewById()
并更新TextView
中的onCreateView()
(您目前在onPreExecute()
execute()
您的LongOperation
onCreateView()
答案 1 :(得分:0)
我认为在执行以下更改后代码将起作用。 :D空指针来自getView()我认为
TextView txt = null;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.fragmentone, container, false);
txt = (TextView) view.findViewById(R.id.textView1);
new LongOperation().execute("");
return view;
}
private class LongOperation extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
txt.setText("\nLoading...");
}
// etc etc etc
}