![](/img/trans.png)
[英]The method getSupportFragmentManager() is undefined for the type new AdapterView.OnItemClickListener(){}
[英]The method startActivityForResult(Intent, int) is undefined for the type new AdapterView.OnItemClickListener
嘿,我是Android的新手,我正在嘗試編寫一個從網上獲取json數據的應用程序,創建一個列表。 如果單擊列表項,則會啟動一個新活動,其中顯示活動的詳細信息。 但是,我似乎無法啟動第二個活動,我不斷收到錯誤“方法startActivityForResult(Intent,int)未定義為eclipse中新類型的AdapterView.OnItemClickListener(){}”。 這是完整的來源。 有任何想法嗎?
public class Main extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
new LongOperation(this).execute();
}
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
new LongOperation(this).execute();
return true;
}
}
class LongOperation extends AsyncTask<String, Void, String> {
private Main longOperationContext = null;
ProgressDialog pd = null;
TextView tv = null;
ListView lv1 = null;
String [] lv_arr;
String [] lv_arr_id;
private static final int ACTIVITY_CREATE = 0;
public LongOperation(Main context) {
longOperationContext = context;
Log.v("LongOper", "Konstuktor");
}
@Override
protected String doInBackground(String... params) {
Log.v("doInBackground", "inside");
try {
URL json = new URL("http://www.ytmusicplayer.com/jsontest.php");
URLConnection tc = json.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(tc.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
JSONArray ja = new JSONArray(line);
Log.v("line = ", " " + ja.length());
lv_arr = new String[ja.length()];
lv_arr_id = new String[ja.length()];
for (int i=0;i<ja.length();i++) {
JSONObject jo = (JSONObject) ja.get(i);
lv_arr[i] = jo.getString("name");
lv_arr_id[i] = jo.getString("id");
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
Log.v("Error", "URL exc");
} catch (IOException e) {
e.printStackTrace();
Log.v("ERROR", "IOEXECPTOIn");
} catch (JSONException e) {
e.printStackTrace();
Log.v("Error", "JsonException");
}
Log.v("Line: ", lv_arr[0] + " - " + lv_arr[1]);
return null;
}
@Override
protected void onPostExecute(String result) {
lv1.setAdapter(new ArrayAdapter<String>(longOperationContext,android.R.layout.simple_list_item_1 , lv_arr));
lv1.setTextFilterEnabled(true);
lv1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
Intent i = new Intent(longOperationContext, Details.class);
i.putExtra("id", lv_arr_id[position]);
startActivityForResult(i, ACTIVITY_CREATE);
}
});
pd.hide();
}
protected void onPreExecute() {
lv1 = (ListView)longOperationContext.findViewById(R.id.ListView01);
pd = new ProgressDialog(longOperationContext);
pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
pd.setMessage("Loading...");
pd.setIndeterminate(true);
pd.setCancelable(false);
pd.show();
}
@Override
protected void onProgressUpdate(Void... values) {
}
}
提前致謝
發生這種情況是因為該行代碼出現在內部類中。 Java認為你正在嘗試訪問內部類的方法,當你想要的是外部類的方法(Activity的方法)。 在任何方法調用之前都有一個隱式this
關鍵字,所以你實際上是在做this.startActivityForResult(i, ACTIVITY_CREATE);
嘗試使用Main.this.startActivityForResult(i, ACTIVITY_CREATE);
此語法是您訪問外部類類型的對象的方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.