我在网格中创建使用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)
请建议我如何做到这一点。