Android 将数据从异步任务传递到活动视图

Android 将数据从异步任务传递到活动视图,android,android-layout,android-asynctask,android-activity,android-view,Android,Android Layout,Android Asynctask,Android Activity,Android View,有许多问题与我的问题有关,但没有一个真正解决了我的问题。我几乎都试过了 我试图在从网络源获取数据后更改布局中的值,但每次都会收到nullpointerexception 我犯了一个错误 03-25 18:05:43.071: E/AndroidRuntime(4832): FATAL EXCEPTION: main 03-25 18:05:43.071: E/AndroidRuntime(4832): java.lang.NullPointerException 03-25 18

有许多问题与我的问题有关,但没有一个真正解决了我的问题。我几乎都试过了

我试图在从网络源获取数据后更改布局中的值,但每次都会收到nullpointerexception

我犯了一个错误

03-25 18:05:43.071: E/AndroidRuntime(4832): FATAL EXCEPTION: main
    03-25 18:05:43.071: E/AndroidRuntime(4832): java.lang.NullPointerException
    03-25 18:05:43.071: E/AndroidRuntime(4832):     at com.wishberg.app.CommunityPageActivity$SendRequest.onPostExecute(CommunityPageActivity.java:158)
    03-25 18:05:43.071: E/AndroidRuntime(4832):     at com.wishberg.app.CommunityPageActivity$SendRequest.onPostExecute(CommunityPageActivity.java:1)
    03-25 18:05:43.071: E/AndroidRuntime(4832):     at android.os.AsyncTask.finish(AsyncTask.java:631)
    03-25 18:05:43.071: E/AndroidRuntime(4832):     at android.os.AsyncTask.access$600(AsyncTask.java:177)
    03-25 18:05:43.071: E/AndroidRuntime(4832):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
    03-25 18:05:43.071: E/AndroidRuntime(4832):     at android.os.Handler.dispatchMessage(Handler.java:99)
    03-25 18:05:43.071: E/AndroidRuntime(4832):     at android.os.Looper.loop(Looper.java:137)
    03-25 18:05:43.071: E/AndroidRuntime(4832):     at android.app.ActivityThread.main(ActivityThread.java:5103)
    03-25 18:05:43.071: E/AndroidRuntime(4832):     at java.lang.reflect.Method.invokeNative(Native Method)
    03-25 18:05:43.071: E/AndroidRuntime(4832):     at java.lang.reflect.Method.invoke(Method.java:525)
    03-25 18:05:43.071: E/AndroidRuntime(4832):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
    03-25 18:05:43.071: E/AndroidRuntime(4832):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    03-25 18:05:43.071: E/AndroidRuntime(4832):     at dalvik.system.NativeStart.main(Native Method)
这是我的活动课

public class CommunityPageActivity extends Activity {

    public String wishid = null;
    private Context context = null;
    public String TAG = "communitypage";

    private String cachedName = "community";
    private static final int URL_LOADER = 0;
    private Menu optionsMenu;
    private ProgressDialog progress;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        Intent i = getIntent();
        wishid = i.getStringExtra("id");
        context = getApplicationContext();

        ActionBar actionBar = getActionBar();
        actionBar.setDisplayShowTitleEnabled(false);

        Common.setRefreshActionButtonState(true, optionsMenu);

            progress = new ProgressDialog(this);
    progress.setMessage("Loading...");
    progress.setIndeterminate(true);
    progress.show();

        setContentView(R.layout.community);
    }


    private class SendRequest extends AsyncTask<String, Integer, String> {

        // http://www.mysamplecode.com/2012/11/android-progress-bar-example.html

        ViewHolder holder = null;
        protected String doInBackground(String... requestURL) {

            String data = "";
            HttpURLConnection httpUrlConnection = null;

            try {

                data = Common.readStream(in);

            } catch (MalformedURLException exception) {
                Log.e(TAG, "MalformedURLException");
            } catch (IOException exception) {
                Log.e(TAG, "IOException");
            } finally {
                if (null != httpUrlConnection)
                    httpUrlConnection.disconnect();
            }
            return data;

        }

        protected void onPostExecute(String jsonString) {

            progress.dismiss();
            System.out.println(jsonString);
            JSONArray jsonArray = Common.getArrayFromJsonString(jsonString, 0);


            Inflater inflater;
//          View v = inflater.inflate(R.layout.community);
            holder.txtWishName = (TextView) CommunityPageActivity.this.findViewById(R.id.tv_communitywishname);
            System.out.println(holder);
            System.out.println(jsonArray);
        }


        /* private view holder class */
        private class ViewHolder {
            ImageView imageView;
            TextView txtWishName;
            ImageButton btn_touchwood;
            ImageButton btn_addwish;
            TextView tvGesture;
            TextView tvNotes;
        }

    }

}
公共类CommunityPageActivity扩展活动{
公共字符串wishid=null;
私有上下文=null;
公共字符串TAG=“communitypage”;
私有字符串cachedName=“community”;
私有静态final int URL_LOADER=0;
私人菜单选项菜单;
私人进展对话进展;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
Intent i=getIntent();
wishid=i.getStringExtra(“id”);
context=getApplicationContext();
ActionBar ActionBar=getActionBar();
actionBar.setDisplayShowTitleEnabled(false);
Common.setRefreshActionButtonState(true,选项菜单);
进度=新建进度对话框(此对话框);
progress.setMessage(“加载…”);
progress.setUndeterminate(true);
progress.show();
setContentView(R.layout.community);
}
私有类SendRequest扩展了异步任务{
// http://www.mysamplecode.com/2012/11/android-progress-bar-example.html
ViewHolder=null;
受保护的字符串doInBackground(字符串…请求URL){
字符串数据=”;
HttpURLConnection HttpURLConnection=null;
试一试{
数据=Common.readStream(in);
}捕获(畸形异常异常){
Log.e(标签“MalformedURLException”);
}捕获(IOException异常){
Log.e(标记“IOException”);
}最后{
if(null!=httpUrlConnection)
httpUrlConnection.disconnect();
}
返回数据;
}
受保护的void onPostExecute(字符串jsonString){
进步。解散();
System.out.println(jsonString);
JSONArray JSONArray=Common.getArrayFromJsonString(jsonString,0);
充气机;
//视图v=充气机。充气(右布局。社区);
holder.txtWishName=(TextView)CommunityPageActivity.this.findViewById(R.id.tv_communitywishname);
系统输出打印LN(支架);
System.out.println(jsonArray);
}
/*私有视图持有者类*/
私有类视窗持有者{
图像视图图像视图;
文本视图txtWishName;
图像按钮btn_touchwood;
图像按钮btn_addwish;
文本视图;
文本视图tvNotes;
}
}
}
删除此行

 progress.dismiss();
您尚未初始化,也未在任何地方使用。。 根据评论

你的

删除此行

 progress.dismiss();
您尚未初始化,也未在任何地方使用。。 根据评论

你的

删除此行

 progress.dismiss();
您尚未初始化,也未在任何地方使用。。 根据评论

你的

删除此行

 progress.dismiss();
您尚未初始化,也未在任何地方使用。。 根据评论

你的


首先,不要在
AsyncTask
中初始化小部件。不要在里面使用充气机。您应该在
onCreate(..)
中初始化所有内容

然后,您可以在异步任务中执行昂贵的操作(HTTP连接等)。然后在
onPostExecute
中,您应该更新UI小部件,这些小部件在
活动中被初始化。至少
AsyncTask
就是这样运作的

正如前面提到的,您的
holder
变量没有初始化,这就是为什么您首先会得到异常


Upd:此外,在
onPostExecute()
中解析JSON数据是一个坏主意,因为它可能会抵消使用AsyncTask的预期效果-此方法在UI线程上运行并可能冻结它。首先,不要在
异步任务中初始化小部件。不要在里面使用充气机。您应该在
onCreate(..)
中初始化所有内容

然后,您可以在异步任务中执行昂贵的操作(HTTP连接等)。然后在
onPostExecute
中,您应该更新UI小部件,这些小部件在
活动中被初始化。至少
AsyncTask
就是这样运作的

正如前面提到的,您的
holder
变量没有初始化,这就是为什么您首先会得到异常


Upd:此外,在
onPostExecute()
中解析JSON数据是一个坏主意,因为它可能会抵消使用AsyncTask的预期效果-此方法在UI线程上运行并可能冻结它。首先,不要在
异步任务中初始化小部件。不要在里面使用充气机。您应该在
onCreate(..)
中初始化所有内容

然后,您可以在异步任务中执行昂贵的操作(HTTP连接等)。然后在
onPostExecute
中,您应该更新UI小部件,这些小部件在
活动中被初始化。至少
AsyncTask
就是这样运作的

正如前面提到的,您的
holder
变量没有初始化,这就是为什么您首先会得到异常

Upd:此外,在
onPostExecute()
中解析JSON数据是个坏主意,因为它可能会