我是Android的新手,我对此代码有疑问。我正在尝试获取JSON字符串并启动另一个活动以将其显示为ListView 我无法开始这项活动。它表示 构造函数Intent(RequestJsonString,Class)未定义 和 构造函数Intent(RequestJsonString,Class)未定义 < / strong>。
下面:
Intent intent = new Intent(RequestJsonString.this,DisplayResults.class);
和这里:
RequestJsonString.this.startActivity(intent);
我已经在stackoverflow上阅读了很多帖子,并尝试使用activity
,context
和this
。但我仍然没有做对。我想我应该错过一些东西。任何帮助表示赞赏。
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");
}
}
答案 0 :(得分: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);
答案 1 :(得分:1)
在您的情况下,您指的是asynctask类上下文
Intent intent = new Intent(RequestJsonString.this,DisplayResults.class);
使用活动上下文
Intent intent = new Intent(ActivityName.this,DisplayResults.class);
检查链接以了解何时使用getApplicationContext()以及何时使用活动上下文
When to call activity context OR application 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);