2012-09-24 1 views
0

Это мой первый раз, когда я использовал ListView и попробовал много способов сделать это работоспособным. Во-первых, я использовал в файле xml под именем, чтобы указать «андроид: записи» с строковым массивом, он отображался, но я не смог активировать onClickListener. Другой метод был похож на тот, который у меня есть, некоторые из них были там, где я использовал «расширить Acitvity». Заранее спасибо за помощь.ListView не может быть отображен

В принципе, я хочу использовать настраиваемую строку textView для каждого элемента в списке и показать тост для каждой доступной строки. Моя проблема в том, что приложение будет разбиваться, как только я попытаюсь отобразить это действие. Я не уверен, где проблема, так как нет синтаксической ошибки. Сообщения об ошибках в (К сожалению, я бы разместить фотографию, но я не могу - новый пользователь):

  • НЕУСТРАНИМОГО ИСКЛЮЧЕНИЕ: главный
  • java.lang.RuntimeException: Не удается запустить деятельность ComponentInfo (Edu .. ...)
  • в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2202)
  • в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2237)
  • в android.app.ActivityThread. доступ $ 600 (ActivityTHread.java:139)
  • в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1262)
  • в android.os.Handler.dispatchMessage (Handler.java:99)
  • в android.os.Looper.loop (Loooper. Java: 154)
  • на android.app.ActivityThread.main (ActivityThread.java:4974)
  • на java.lang.reflect.Method.invokeNative (Родной метод)
  • в java.lang.reflect.Method .invoke (Метод java: 511)
  • at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:784)
  • на com.android.internal.os.ZygoteInit.main (ZygotaInit.java:551)
  • на dalvik.system.NativeStart.main (Native Method)
  • Вызванный: java.lang.UnsupportedOperationException: addView (Просмотреть , LayoutParams) ...
  • в android.widget.AdapterView.addView (AdapterView.java:471)
  • в android.view.LayoutInflater.rInflate (LayoutInflater.java:743)
  • в android.view. LayoutInflater.rInflate (LayoutInflater.java:742)
  • на android.view.LayoutInflater.rInflate (LayoutInflater.java:489)
  • 44 +44516410617451515053691368888
  • на android.view.LayoutInflater.rInflate (LayoutInflater.java:396)
  • на android.view.LayoutInflater.rInflate (LayoutInflater.java:352)
  • в com.android.internal.policy.impl.PhoneWindows .setContentView (PhoneWindow.java ...)
  • в android.app.Activity.setContentView (Activity.java:1892)
  • в edu.nyp.wonderful.Menu.onCreate (Menu.java:14)
  • на android.app.Activity.performCreate (Activity.java:4538)
  • на android.app.Instrumentation.callActivityOnCreate (Instr тацию.Java: 1071)
  • в android.app.ActivityThread.performLaunchActivity (ActivityTHread.java:2158)
  • ... еще 11 строк (я не могу показать больше впечатать)

меню. Java v

package edu.nyp.wonderful; 

import android.app.ListActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.Toast; 


public class Menu extends ListActivity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.menu); 

     Log.d("Menu:", "after set content view"); 

     String[] items = { "Set Pins", "View Pins", "List of Pins", "Email Summary", "Edit Session's Info" }; 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.menu_row, R.id.menu_name, items); 
     setListAdapter(adapter); 
     Log.d("Menu:", "after setting adapter"); 
    } 

    protected void onListItemClick(ListView l, View v, int position, long id){ 
     super.onListItemClick(l, v, position, id); 
     Toast.makeText(getApplicationContext(), "Clicked position: " + position, Toast.LENGTH_SHORT).show(); 
    } 
} 

menu.xml v

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:background="@drawable/background" > 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:layout_marginBottom="10dp" > 

     <ImageView 
      android:id="@+id/imageView1" 
      android:layout_width="54dp" 
      android:layout_height="60dp" 
      android:layout_marginLeft="20dp" 
      android:layout_marginTop="10dp" 
      android:src="@drawable/logo" /> 

     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="Menu" 
      android:textColor="#DC1700" 
      android:textStyle="bold" 
      android:layout_marginLeft="10dp" 
      android:layout_marginTop="30dp" 
      android:textSize="25sp" 
      android:typeface="serif" /> 
    </LinearLayout> 

    <View android:id="@+id/separator1" 
     android:background="#000000" 
     android:layout_width = "fill_parent" 
     android:layout_height="1dp" 
     android:layout_marginBottom="10dp" /> 


    <ListView 
     android:id="@+id/android:list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:divider="#000000" 
     android:dividerHeight="1dp" > 

     <TextView android:id="@+id/android:empty" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="nothing" /> 

    </ListView> 
</LinearLayout> 

* menu_row.xml v *

<?xml version="1.0" encoding="utf-8"?> 
<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/menu_name" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textColor="#000000" 
    android:textSize="23dp" 
    android:shadowRadius="5" 
    android:shadowColor="#000000" 
    android:shadowDy="3" 
    android:shadowDx="3" 
    android:layout_marginLeft="10dp" 
    android:layout_marginBottom="10dp" 
    android:layout_marginTop="10dp" /> 
+1

Пожалуйста, добавьте полную ошибку logcat. –

+0

добавлено больше ошибок, спасибо – user1661881

+0

@ user1661881 вы вызываете меню (ListActivity) из какой-либо другой деятельности. Как с помощью нажатия кнопки или чего-то еще? –

ответ

0

Да, это проблема.

android:id="@+id/android:list" 

Это должно быть

android:id="@android:id/list" 

Устранить его и проверить, отчет обратно, если проблема не устранена.

Update: Я не могу поверить, что я не видел его раньше: P

У вас есть TextView внутри Listview. Это невозможно. Если вы намерены использовать «Пустой вид», имейте их как внутри LinearLayout/FrameLayout. Но Listview не может заключить TextView, они должны лежать рядом друг с другом. Затем убедитесь, что вы установите свойство «Empty View» в «ListView» с идентификатором TextView в этом случае @android:id/empty (пожалуйста, исправить это, а)

+0

Спасибо, я попробовал изменить его, но нет никакой разницы. Я ссылаюсь на разработку приложений для Android для манекенов pdf page 215, где они записали «android: id =» @ + id/android: list »' – user1661881

+0

@ user1661881, могу заверить, что книга очень неправа. Вот мой [источник] (http://developer.android.com/reference/android/app/ListActivity.html) Также отправьте FULL logcat. Я знаю, что вы добавили больше строк, но нам нужно больше, в Red должно быть больше строк, пожалуйста, опубликуйте это. – st0le

+0

yup, я изменил его в соответствии с вашим, я просто перекрестно ссылался, спасибо =) Я отредактировал его и разместил все красные линии, я не могу получить доступ к последним 11 строкам, извините – user1661881

0

Попробуйте изменить свой код, как этот

public class Menu extends ListActivity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.menu); 

     Log.d("Menu:", "after set content view"); 

     String[] items = { "Set Pins", "View Pins", "List of Pins", "Email Summary", "Edit Session's Info" }; 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.menu_row, R.id.menu_name, items); 

     ListView lv = getListView(); 
     lv.setAdapter(adapter); 
     Log.d("Menu:", "after setting adapter"); 
    } 

    protected void onListItemClick(ListView l, View v, int position, long id){ 
     super.onListItemClick(l, v, position, id); 
     Toast.makeText(getApplicationContext(), "Clicked position: " + position, Toast.LENGTH_SHORT).show(); 
    } 
} 

Сообщите мне, если это сработает ...

+0

спасибо, я попробовал, но, к сожалению, активность не может быть запущена снова. Просто, чтобы быть понятным - ListView lv = getListView(); что я вошел. =) – user1661881

+0

ya, извините, я добавил два равных знака .. еще одна вещь .. Вы изменили имя списка в xml на то, что сказано в другом ответе. Я полагаю, вы сделали это уже. и есть также изменение в настройке адаптера ... Вы видели это? – Renjith

+0

Yup Я сделал все это. Но он все еще не может бежать. – user1661881

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