2015-04-19 2 views
0

Я посмотрел те же случаи с моим, но могу его преодолеть :( Я получил это «В вашем контенте должен быть ListView с атрибутом id» android. R.id.list», когда я составил программуAndroid Listview поставил под вопрос «android.R.id.list»

Вот такие LogCat и коды

Logcat:

04-20 03:42:53.787: E/AndroidRuntime(2547): FATAL EXCEPTION: main 
04-20 03:42:53.787: E/AndroidRuntime(2547): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.androidbegin.menuviewpagertutorial/com.android.GoTrip.ListFindResult}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list' 
04-20 03:42:53.787: E/AndroidRuntime(2547):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) 
04-20 03:42:53.787: E/AndroidRuntime(2547):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 
04-20 03:42:53.787: E/AndroidRuntime(2547):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 
04-20 03:42:53.787: E/AndroidRuntime(2547):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
04-20 03:42:53.787: E/AndroidRuntime(2547):  at android.os.Handler.dispatchMessage(Handler.java:99) 
04-20 03:42:53.787: E/AndroidRuntime(2547):  at android.os.Looper.loop(Looper.java:137) 
04-20 03:42:53.787: E/AndroidRuntime(2547):  at android.app.ActivityThread.main(ActivityThread.java:5103) 
04-20 03:42:53.787: E/AndroidRuntime(2547):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-20 03:42:53.787: E/AndroidRuntime(2547):  at java.lang.reflect.Method.invoke(Method.java:525) 
04-20 03:42:53.787: E/AndroidRuntime(2547):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
04-20 03:42:53.787: E/AndroidRuntime(2547):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
04-20 03:42:53.787: E/AndroidRuntime(2547):  at dalvik.system.NativeStart.main(Native Method) 
04-20 03:42:53.787: E/AndroidRuntime(2547): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list' 
04-20 03:42:53.787: E/AndroidRuntime(2547):  at android.app.ListActivity.onContentChanged(ListActivity.java:243) 
04-20 03:42:53.787: E/AndroidRuntime(2547):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270) 
04-20 03:42:53.787: E/AndroidRuntime(2547):  at android.app.Activity.setContentView(Activity.java:1895) 
04-20 03:42:53.787: E/AndroidRuntime(2547):  at com.android.GoTrip.ListFindResult.onCreate(ListFindResult.java:59) 
04-20 03:42:53.787: E/AndroidRuntime(2547):  at android.app.Activity.performCreate(Activity.java:5133) 
04-20 03:42:53.787: E/AndroidRuntime(2547):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
04-20 03:42:53.787: E/AndroidRuntime(2547):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) 
04-20 03:42:53.787: E/AndroidRuntime(2547):  ... 11 more 
04-20 03:42:55.839: I/Process(2547): Sending signal. PID: 2547 SIG: 9 

ListFindResult.java

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.listfind); 
     Intent myIntent = getIntent(); 

    searchkey = myIntent.getStringExtra("name"); 
    findList = new ArrayList<HashMap<String, String>>(); 

    new Finding().execute(); 

    ListView lv = getListView(); 

    lv.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
      String iid = ((TextView) view.findViewById(R.id.kode)).getText() 
        .toString(); 

     } 
    }); 

    } 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     pDialog = new ProgressDialog(ListFindResult.this); 
     pDialog.setMessage("Loading locations..."); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(false); 
     pDialog.show(); 
    } 

    protected String doInBackground(String... args) { 
     List<NameValuePair> params = new ArrayList<NameValuePair>(); 
     params.add(new BasicNameValuePair("name", searchkey)); 
     JSONObject json = jParser.makeHttpRequest(url_search, "GET", params); 

     Log.d("Search trips: ", json.toString()); 

     try { 
      int success = json.getInt(TAG_SUCCESS); 

      if (success == 1) { 

       ListLokasi = json.getJSONArray(TAG_ID); 


       for (int i = 0; i < ListLokasi.length(); i++) { 
        JSONObject c = ListLokasi.getJSONObject(i); 

        String textview1 = c.getString(TAG_ID); 

        HashMap<String, String> map = new HashMap<String, String>(); 

        map.put(TAG_ID, textview1); 
        findList.add(map); 
       } 
      } else { 
       } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     return null; 
    } 

    protected void onPostExecute(String file_url) { 
     pDialog.dismiss(); 
     runOnUiThread(new Runnable() { 
      public void run() { 
       ListAdapter adapter = new SimpleAdapter(
         ListFindResult.this, findList, 
         R.layout.daftarlokasi, new String[] { TAG_ID}, 
         new int[] { R.id.textview1}); 
       setListAdapter(adapter); 
      } 
     }); 

listfind.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 

    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <ListView android:id="@+id/listview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

    </ListView> 

</RelativeLayout> 
+0

Вы, вероятно, простирающийся 'ListActivity' вместо' Activity'; для этого требуется, чтобы подпрограмма 'ListView' имела идентификатор' android.R.id.list', поэтому она может предоставлять вспомогательные методы, такие как 'getListView()'. – Emmanuel

+0

Попробуйте изменить идентификатор вашего списка ListView на «list» вместо «listview» и посмотреть, не дает ли он ошибок –

+0

@emmanuel: Спасибо, ребята, теперь это работает .. ах .. вот почему ... спасибо за ваше объяснение:) – meruvi

ответ

1

Поскольку вы используете ListActivity вы должны использовать идентификатор @android:id/list вместо пользовательского идентификатора в файле XML.

Чтобы разрешить эту проблему изменить listfind.xml от:

<ListView android:id="@+id/listview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
</ListView> 

в

<ListView android:id="@android:id/list" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
</ListView> 
+0

SO не любит код только ответы. Просьба дать пояснения. – Emmanuel

+0

Спасибо, я только что отредактировал сообщение. –

+0

жду .. я пробую – meruvi

Смежные вопросы