2012-02-24 4 views
0

Я пробовал разные вещи, но все еще не «идет»Пользовательский диалог с сбоем списка просмотров

У меня есть деятельность. В этом случае, когда я нажимаю одну из опций в меню, мне нужно вывести диалоговое окно и в этом диалоговом окне просмотреть список строк, которые я получаю из массива строк массива xml.

Я уже удалил код, чтобы очистить его, но до сих пор не повезло ...

myList.xml

<ListView xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 
</ListView> 

мой пользовательский диалог

public class Selector extends Dialog { 

String[] testArray; 
protected Selector(Context context) { 
    super(context); 

    ListView lijstje = (ListView) findViewById(R.layout.mylist); 
    testArray = context.getResources().getStringArray(R.array.currencies); 
    Log.d("test",testArray[0]);//wich shows me the 1e string and it's working 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this.getContext(),android.R.layout.simple_list_item_1, testArray); 
    lijstje.setAdapter(adapter); 

    LayoutInflater li = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View v = li.inflate(R.layout.mylist, null, false); 
    this.setContentView(v); 

} 

} 

в моей основной деятельности У меня есть функция

public void showPopup() 
{  
    Selector test = new Selector(this); 
    test.show(); 
} 

когда я положил lijstje.setAdapter (адаптер); в комментарии мое приложение не врезаться, но диалог очень маленький и пустой

02-24 22:14:29.705: D/AndroidRuntime(28734): Shutting down VM 
02-24 22:14:29.705: W/dalvikvm(28734): threadid=1: thread exiting with uncaught exception (group=0x40a4e1f8) 
02-24 22:14:29.715: E/AndroidRuntime(28734): FATAL EXCEPTION: main 
02-24 22:14:29.715: E/AndroidRuntime(28734): java.lang.NullPointerException 
02-24 22:14:29.715: E/AndroidRuntime(28734): at be.veeteedev.OmzetterActivity.showPopup(OmzetterActivity.java:83) 
02-24 22:14:29.715: E/AndroidRuntime(28734): at be.veeteedev.OmzetterActivity.onOptionsItemSelected(OmzetterActivity.java:59) 
02-24 22:14:29.715: E/AndroidRuntime(28734): at android.app.Activity.onMenuItemSelected(Activity.java:2502) 
02-24 22:14:29.715: E/AndroidRuntime(28734): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:950) 
02-24 22:14:29.715: E/AndroidRuntime(28734): at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735) 
02-24 22:14:29.715: E/AndroidRuntime(28734): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149) 
02-24 22:14:29.715: E/AndroidRuntime(28734): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874) 
02-24 22:14:29.715: E/AndroidRuntime(28734): at com.android.internal.view.menu.ListMenuPresenter.onItemClick(ListMenuPresenter.java:163) 
02-24 22:14:29.715: E/AndroidRuntime(28734): at android.widget.AdapterView.performItemClick(AdapterView.java:292) 
02-24 22:14:29.715: E/AndroidRuntime(28734): at android.widget.AbsListView.performItemClick(AbsListView.java:1058) 
02-24 22:14:29.715: E/AndroidRuntime(28734): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2514) 
02-24 22:14:29.715: E/AndroidRuntime(28734): at android.widget.AbsListView$1.run(AbsListView.java:3168) 
02-24 22:14:29.715: E/AndroidRuntime(28734): at android.os.Handler.handleCallback(Handler.java:605) 
02-24 22:14:29.715: E/AndroidRuntime(28734): at android.os.Handler.dispatchMessage(Handler.java:92) 
02-24 22:14:29.715: E/AndroidRuntime(28734): at android.os.Looper.loop(Looper.java:137) 
02-24 22:14:29.715: E/AndroidRuntime(28734): at android.app.ActivityThread.main(ActivityThread.java:4424) 
02-24 22:14:29.715: E/AndroidRuntime(28734): at java.lang.reflect.Method.invokeNative(Native Method) 
02-24 22:14:29.715: E/AndroidRuntime(28734): at java.lang.reflect.Method.invoke(Method.java:511) 
02-24 22:14:29.715: E/AndroidRuntime(28734): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
02-24 22:14:29.715: E/AndroidRuntime(28734): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
02-24 22:14:29.715: E/AndroidRuntime(28734): at dalvik.system.NativeStart.main(Native Method) 
+0

использовать контекст вместо this.getContext() – noob

ответ

0

Я не уверен, что это будет волшебно решить все проблемы, с которыми вы, но в вашем Selector конструкторе имеют следующее назначение:

ListView lijstje = (ListView) findViewById(R.layout.mylist); 

Обратите внимание, что вы пытаетесь найти представление с идентификатором макета. Он должен сказать что-то вроде R.id.mylist вместо. В настоящее время он разрешит null, следовательно NullPointerException.

Кроме того, вы делаете setContentView(...) всю дорогу в конце. Если вы пытаетесь раздуть представления из указанного файла макета (R.layout.mylist), убедитесь, что вы сделали это после, установив представление содержимого.

Кстати, если у вас нет привлекательного макета для диалогового окна, отображающего список, вам, вероятно, может быть достаточно с построителем AlertDialog по умолчанию. Have a read here, samples included. Для некоторой помощи в пользовательских диалогах посмотрите further down the bottom той же страницы.

0

Я предполагаю, что это ваша проблема. Там нет ничего, чтобы найти вид на

ListView lijstje = (ListView) findViewById(R.layout.mylist); 

lijstje является нулевым, когда называют этот способ lijstje это расположение не вид

также установить просмотр контента должно быть, прежде чем что-либо еще

public class Selector extends Dialog { 

String[] testArray; 
protected Selector(Context context) { 
    super(context); 
    setContentView(R.layout.list); 

    ListView lijstje = (ListView) findViewById(R.id.mylist); 
    testArray = context.getResources().getStringArray(R.array.currencies); 
    Log.d("test",testArray[0]);//wich shows me the 1e string and it's working 
    ArrayAdapter<String> adapter = new ArrayAdapter<String> (this.getContext(),android.R.layout.simple_list_item_1, testArray); 
    lijstje.setAdapter(adapter); 
} 

mylist.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

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

</LinearLayout>