1

我是 android 新手,我对这段代码有疑问。我正在尝试获取 JSON 字符串并启动另一个活动以将其显示为 ListView。
我无法开始活动。它说构造函数 Intent(RequestJsonString, Class) 是未定义的,而构造函数 Intent(RequestJsonString, Class) 是未定义的

这里: Intent intent = new Intent(RequestJsonString.this,DisplayResults.class); 和这里: RequestJsonString.this.startActivity(intent);

我在 stackoverflow 上阅读了很多关于此的帖子,并尝试使用activity,contextthis. 但我仍然没有做对。我想我应该遗漏一些东西。任何帮助表示赞赏。

public class RequestJsonString extends AsyncTask<String, Void, JSONObject> {

@Override
protected JSONObject doInBackground(String... urls) {
    // Code HTTP Get Request and get JSONObject
            return jsonObject;
}

protected void onPostExecute(JSONObject jsonObj){
    try {

        Intent intent = new Intent(RequestJsonString.this,DisplayResults.class);
        intent.putExtra("JSON_Object", jsonObj.toString());
        RequestJsonString.this.startActivity(intent);

    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    Log.v("Json_OutPut","Done");

}

}
4

2 回答 2

2

从 AsyncTask 启动活动。

Intent intent = new Intent(YourActivityName.this,DisplayResults.class);

或者你可以像下面一样做。

声明context实例变量并在onCreate方法中初始化它。

private Context context;
public void onCreate(Bundle bundle) {
   ............
   context = this;
   ........
}

像这样开始活动。

Intent intent = new Intent(context,DisplayResults.class);
intent.putExtra("JSON_Object", jsonObj.toString());
startActivity(intent);
于 2013-04-21T06:52:38.193 回答
1

在您的情况下,您指的是 asynctask 类上下文

Intent intent = new Intent(RequestJsonString.this,DisplayResults.class);

使用活动上下文

Intent intent = new Intent(ActivityName.this,DisplayResults.class);

检查链接以了解何时使用 getApplicationContext() 以及何时使用 Activity Context

何时调用活动上下文或应用程序上下文?

编辑:

将 Activity 上下文传递给 asynctask 构造函数

 new RequestJsonString(ActivityName.this).execute(params..);

在您的 asynctask 构造函数中

 Context c;
 public  RequestJsonString( Context context)
 {
        c= context;
 }

然后

   Intent intent = new Intent(c,DisplayResults.class);
   startActivity(intent);
于 2013-04-21T06:53:12.600 回答