2012-02-24 5 views
0

私はさまざまなことを試しましたが、まだ「行かない」リストビューがクラッシュしているカスタムダイアログ

私には活動があります。これで、メニューのオプションの1つを押すと、ダイアログをポップアップし、そのダイアログで文字列値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); 

} 

} 

ました私は機能しています

私は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()の代わりにcontextを使用します。 – noob

答えて

0

私は、これは魔法のようにすべてのあなたのしている問題を解決しますわからないんだけど、あなたのセレクタのコンストラクタで次の割り当てを持っている:

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

レイアウトIDを持つビューをどのように検索しようとしているかに注意してください。代わりにR.id.mylistのようなものを言うべきです。現在はnullに解決されますので、NullPointerExceptionです。

また、最後にsetContentView(...)を実行しています。上記のレイアウトファイル(R.layout.mylist)からビューを膨らませる場合は、コンテンツビューを設定したの後にを必ず実行してください。

ちなみに、リストを表示するダイアログの空想レイアウトがない場合は、デフォルトのAlertDialog Builderで十分です。 Have a read here, samples included。カスタムダイアログのヘルプについては、同じページのfurther down the bottomを参照してください。

0

私はこれがあなたの問題だと思っています。この方法と呼ばれる lijstjeレイアウトではない

も設定されたコンテンツビューが何かする前にする必要がありますビューのとき

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

lijstjeによってビューを見つけるために何がnullでありません

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> 
関連する問題