gpt4 book ai didi

android - 上下文在另一个 Activity 的 fragment 中不可用

转载 作者:行者123 更新时间:2023-11-29 14:27:23 26 4
gpt4 key购买 nike

我有一个带有 DrawerLayoutActivity。我正在这个 Activity xml 文件的 FrameLayout 中膨胀一个 Fragment。 Xml 文件包含 LinearLayout 内的 GridView。我在 fragment onActivityCreated 方法内的此 GridView 上应用了 setOnItemClickListener。但是在这个方法中,我调用了我的 ActivityAsyncTask 类。因此,当我从我的 setOnItemClickListener 调用此 AsyncTask 时,我没有获得 Context。如果可能,请给我一些建议如何去做或任何替代方案。

我的 Activity

class GetExamList extends AsyncTask<String, String, String>{
Context context;

public GetExamList(Context mContext){
context=mContext;
}

@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(context);
pDialog.setMessage("Fetching Test List");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}

@Override
protected String doInBackground(String... params) {

exam_id=1;
List<NameValuePair> list = new ArrayList<NameValuePair>();
list.add(new BasicNameValuePair("exam_id", exam_id+""));

JSONObject json = jsonParser.makeHttpRequest(url_exam_list,
"POST", list);

// check for success tag
try {
int success = json.getInt("flag");
Log.d("flag", success+"");

if (success == 1) {
//fetch exam list
JSONArray elist=json.getJSONArray("testdata");
Log.d("flag=1", "in try of HomeExamList");

for (int i = 0; i < elist.length(); i++) {

JSONObject obj=elist.getJSONObject(i);

int testId=obj.getInt("test_id");
String testName=obj.getString("test_name");

Log.d("elist test_id", testId+"");
Log.d("elist test_name", testName);

Test test=new Test();
test.setExam_id(exam_id);
test.setTest_id(testId);
test.setTest_name(testName);

Dao dao=new Dao(context);
dao.open();

boolean check=dao.chechTestIdInTestList(testId);
if(!check) dao.insertTestList(test);

dao.close();
}


} else {
// failed to create product
Toast.makeText(getApplicationContext(), "unsuccessful", 2000).show();
}
} catch (JSONException e) {
e.printStackTrace();
}


return null;
}

@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
pDialog.dismiss();

Intent intent = new Intent(context, ExamList.class);
intent.putExtra("eid", exam_id);
startActivity(intent);

}
}

最佳答案

您需要使用 getActivity() 替代 fragment 基础设计中的上下文。

getActivity() 返回此 fragment 当前关联的Activity。

安卓文档: http://developer.android.com/reference/android/app/Fragment.html#getActivity%28%29

((MainActivity) getActivity()) is castable to your Activity.

关于android - 上下文在另一个 Activity 的 fragment 中不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24400409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com