如何从baseadapter中的asynctask调用intent

时间:2014-01-31 07:33:43

标签: android gridview android-asynctask

我在网格中创建使用BaseAdapter的按钮。单击按钮时我需要连接到服务器,并且根据db的结果我决定要执行的下一个事件。

所以我在 custombaseadapter 中编写了AsyncTask并在按钮的onclick事件中调用它。在那里我需要使用意图开始新的活动。

我尝试使用我在baseadapter中使用的相同上下文,但它崩溃了应用程序。

以下是我调用意图的postExecute()方法:

protected void onPostExecute(String sJson) {

    try {

        //TableLayout tll12=(TableLayout)getActivity().findViewById(R.id.ordertab1);
        // convert json string to json array
        JSONArray aJson = new JSONArray(sJson);

        JSONObject jsonO = aJson.getJSONObject(0);
        tabres=jsonO.getString("MSG");

        if(tabres.equals("No")){
            Bundle bundle = new Bundle();                    
            bundle.putString("username",Table_no.username);                                                 
            Intent myint=new Intent(mContext,Take_order.class);
            myint.putExtras(bundle);
            mContext.startActivity(myint);
        }
        else{
            Toast.makeText(mContext, "Bill Already Generated", Toast.LENGTH_LONG).show();
        }
    }catch(JSONException e){
        msg = "Invalid response";
    }
}

我在baseadapter中声明了这个mContext并在其构造函数中初始化它。

这是logcat

01-31 12:32:43.380: E/AndroidRuntime(637): FATAL EXCEPTION: main
01-31 12:32:43.380: E/AndroidRuntime(637): java.lang.NullPointerException
01-31 12:32:43.380: E/AndroidRuntime(637):  at android.content.ComponentName.<init>(ComponentName.java:75)
01-31 12:32:43.380: E/AndroidRuntime(637):  at android.content.Intent.<init>(Intent.java:2876)
01-31 12:32:43.380: E/AndroidRuntime(637):  at com.example.androiddbconnection.CustomGridViewAdapter$tableasync.onPostExecute(CustomGridViewAdapter.java:266)
01-31 12:32:43.380: E/AndroidRuntime(637):  at com.example.androiddbconnection.CustomGridViewAdapter$tableasync.onPostExecute(CustomGridViewAdapter.java:1)
01-31 12:32:43.380: E/AndroidRuntime(637):  at android.os.AsyncTask.finish(AsyncTask.java:590)
01-31 12:32:43.380: E/AndroidRuntime(637):  at android.os.AsyncTask.access$600(AsyncTask.java:149)
01-31 12:32:43.380: E/AndroidRuntime(637):  at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:603)
01-31 12:32:43.380: E/AndroidRuntime(637):  at android.os.Handler.dispatchMessage(Handler.java:99)
01-31 12:32:43.380: E/AndroidRuntime(637):  at android.os.Looper.loop(Looper.java:132)
01-31 12:32:43.380: E/AndroidRuntime(637):  at android.app.ActivityThread.main(ActivityThread.java:4123)
01-31 12:32:43.380: E/AndroidRuntime(637):  at java.lang.reflect.Method.invokeNative(Native Method)
01-31 12:32:43.380: E/AndroidRuntime(637):  at java.lang.reflect.Method.invoke(Method.java:491)
01-31 12:32:43.380: E/AndroidRuntime(637):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
01-31 12:32:43.380: E/AndroidRuntime(637):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
01-31 12:32:43.380: E/AndroidRuntime(637):  at dalvik.system.NativeStart.main(Native Method)

请建议我如何做到这一点。

0 个答案:

没有答案