によって引き起こさ:ダイアログのNullpointerexception?
は私がカスタムを持ってnullオブジェクト参照で '無効android.widget.ListView.setAdapter(android.widget.ListAdapter)' 仮想メソッドを呼び出すために試み:java.lang.NullPointerExceptionが
dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.voicedialog);
dialog.setCanceledOnTouchOutside(false);
dialog.getWindow().setLayout((int)(getResources().getDisplayMetrics().widthPixels*0.90), (int)(getResources().getDisplayMetrics().heightPixels*0.90));
adapter = new MyPageAdapter(this);
pager = (ViewPager) dialog.findViewById(R.id.viewpager);
pager.setOffscreenPageLimit(3);
pager.setAdapter(adapter);
dialog.show();
if(pager.getCurrentItem()==0) { //If on first page of viewpager in dialog (this layout contains the listview)
arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, contactArrayList);
listview = (ListView) dialog.findViewById(R.id.listView);
listview.setAdapter(arrayAdapter);
listview.setEmptyView(dialog.findViewById(R.id.emptyElement));
arrayAdapter.notifyDataSetChanged();
}
ここでも、リストビューは私のダイアログでは、私のviewpagerにおけるレイアウトのいずれかであるのIDで、:私のArrayAdapterを設定しようとしたときしかし、私はNullPointerExceptionが取得しています、listview含まViewPagerを含むdialoglistView
私の質問は、上記のコードで明確に参照していますが、なぜリストビューがnullになるのですか。この問題を解決するにはどうすればよいですか?
あなたの貴重な時間をありがとう。
EDIT:
VoiceDialog:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/round"
tools:context="...">
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</RelativeLayout>
ありViewPagerに入る3つのXMLレイアウトがありますが、リストビューで1私はそのコードを置く理由は、最初のページであり、 if(pager.getCurrentItem()==0)
にあります。ここで
がViewPagerAdapter
です:
public class MyPageAdapter extends PagerAdapter {
private Context mContext;
LayoutInflater inflater;
public MyPageAdapter(Context context) {
mContext = context;
inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public Object instantiateItem(ViewGroup collection, int position) {
View view = null;
if(position==0) {
view = inflater.inflate(R.layout.voice1, null);
collection.addView(view);
}if(position==1) {
view = inflater.inflate(R.layout.voice2, null);
collection.addView(view);
}if(position==2) {
view = inflater.inflate(R.layout.voice3, null);
collection.addView(view);
}
return view;
}
@Override
public int getCount() {
return 3;
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View)object);
}
}
あなたはページャがリストビューが含まれていると述べました。 'listview =(ListView)dialog.findViewById(R.id.listView)'ダイアログで直接見つけることができません –
ビューのページャでフラグメントを使用していますか? –
音声合成のレイアウトは見えますか? – Amsheer