簡體   English   中英

Fragment中的ExpandableList拋出空點異常

[英]ExpandableList in Fragment throwing null point exception

我正在嘗試將一個可擴展列表添加到片段currentnotification.xml中,該片段包含expandablelistview,其中groupview顯示包含簡單文本的currentlistparent.xml文件的內容,而childview顯示包含imageview文本和兩個按鈕的currentlistchild.xml文件的內容。 它在執行時顯示nullpointerexception。 我現在僅嘗試使用fragment和expandable list rite,因此無法捕捉到異常原因。

還請告訴我如何區分按下哪個子視圖按鈕。

CurrentNotification.xml

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent" android:layout_height="match_parent"
   android:weightSum="1" android:orientation="vertical">

<ExpandableListView
    android:id="@+id/CurrentNotification"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
</ExpandableListView>

currentlistparent.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="10dp" >

<TextView
    android:id="@+id/CurrentParent"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingLeft="25dp"/>

currentlistchild.xml

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/TableLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >

<TableRow
    android:id="@+id/tableRow1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Name :" />

    <TextView
        android:id="@+id/Name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="" />
</TableRow>

<View
    android:layout_height="2dp"
    android:background="#CCCCCC" />

<TableRow
    android:id="@+id/tableRow2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Contact :" />

    <TextView
        android:id="@+id/Contact"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="" />
</TableRow>

<View
    android:layout_height="2dp"
    android:background="#CCCCCC" />

<TableRow
    android:id="@+id/tableRow3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Workscope :" />

    <TextView
        android:id="@+id/Workscope"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="" />
</TableRow>

<View
    android:layout_height="2dp"
    android:background="#CCCCCC" />

<TableRow
    android:id="@+id/tableRow4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Date :" />

    <TextView
        android:id="@+id/Date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="" />
</TableRow>

<View
    android:layout_height="2dp"
    android:background="#CCCCCC" />

<TableRow
    android:id="@+id/tableRow5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Address :" />

    <TextView
        android:id="@+id/Address"
        android:layout_width="150dp"
        android:layout_height="wrap_content"
        android:text="" />

    <ImageView
        android:id="@+id/map"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_gravity="center"
        android:src="@drawable/folded_globe_contact_maps_plan_map" />

</TableRow>

<View
    android:layout_height="2dp"
    android:background="#CCCCCC" />
<TableRow
    android:id="@+id/tableRow6"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <Button
        android:id="@+id/confirm"
        android:layout_width="90dp"
        android:layout_height="wrap_content"
        android:text="Confirm" />

    <Button
        android:id="@+id/delete"
        android:layout_width="80dp"
        android:layout_height="wrap_content"
        android:layout_column="2"
        android:text="Delete" />

</TableRow>

我的currentNotification.java文件

 public class CurrentNotification extends Fragment {  
   ExpandableListView lv;
   LayoutInflater inflater;
   View view;
   Context context;
   @Override  
   public View onCreateView(LayoutInflater inflater, ViewGroup container,  
            Bundle savedInstanceState) {  
       this.inflater = inflater;
       // TODO Auto-generated method stub  
       view=inflater.inflate(R.layout.currentnotifications,null);
       inflater = LayoutInflater.from(this.context);
       lv = (ExpandableListView)      view.findViewById(R.id.CurrentNotification);
      lv.setAdapter(new ExpandableListAdapter(this.context,inflater));
       return view ;
  }


     class ExpandableListAdapter extends BaseExpandableListAdapter {

    Context context;
    LayoutInflater layoutInflater;
    public ExpandableListAdapter(Context context,LayoutInflater           layoutInflater) {
        this.context = context;
        this.layoutInflater = layoutInflater;
    }

    @Override
    public boolean areAllItemsEnabled() {
        return true;
    }

    @Override
    public Object getChild(int groupPosition, int childPosition) {
        return null;
    }

    @Override
    public long getChildId(int groupPosition, int childPosition) {
        return 0;
    }

    @Override
    public View getChildView(int groupPosition, int childPosition,
            boolean isLastChild, View convertView, ViewGroup parent) {

        View v = null;

          v = View.inflate(context, R.layout.currentlistchild, null);
          TextView name = (TextView) v.findViewById(R.id.Name);
          TextView contact = (TextView) v.findViewById(R.id.Contact);
          TextView workscope = (TextView) v.findViewById(R.id.Workscope);
          TextView date = (TextView) v.findViewById(R.id.Date);
          TextView address = (TextView) v.findViewById(R.id.Address);
        v.invalidate();
        return v;
    }

    @Override
    public int getChildrenCount(int groupPosition) {
        return 1;
    }

    @Override
    public long getCombinedChildId(long groupId, long childId) {
        return 0;
    }

    @Override
    public long getCombinedGroupId(long groupId) {
        return 0;
    }

    @Override
    public Object getGroup(int groupPosition) {
        return null;
    }

    @Override
    public int getGroupCount() {
        return 4;
    }

    @Override
    public long getGroupId(int groupPosition) {
        return 0;
    }

    @Override
    public View getGroupView(int groupPosition, boolean isExpanded,
            View convertView, ViewGroup parent) {

        View v = View.inflate(context, R.layout.currentlistparent, null);
        TextView txtView = (TextView) v.findViewById(R.id.CurrentParent);
        if(groupPosition == 0) {
          txtView.setText("Item 1");
        }
        if(groupPosition == 1) {
            txtView.setText("Item2");
            txtView.setTextSize(15f);
          }
        if(groupPosition == 2) {
            txtView.setText("Item3");
            txtView.setTextSize(15f);
          }
        if(groupPosition == 3) {
            txtView.setText("Item4");
            txtView.setTextSize(15f);
          }
        v.invalidate();
        return v;

    }

    @Override
    public boolean hasStableIds() {
        return false;
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return true;
    }

    @Override
    public boolean isEmpty() {
        return false;
    }

    @Override
    public void onGroupCollapsed(int groupPosition) {

    }
    @Override
    public void onGroupExpanded(int groupPosition) {

    }
    @Override
    public void registerDataSetObserver(DataSetObserver observer) {

    }

    @Override
    public void unregisterDataSetObserver(DataSetObserver observer) {

    }

}
}

錯誤:

  05-02 03:28:50.266: E/AndroidRuntime(599): FATAL EXCEPTION: main
    05-02 03:28:50.266: E/AndroidRuntime(599):     java.lang.NullPointerException
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.view.LayoutInflater.from(LayoutInflater.java:171)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at Tabs.CurrentNotification.onCreateView(CurrentNotification.java:29)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.support.v4.app.Fragment.performCreateView(Fragment.java:1789)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:955)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:490)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.support.v4.view.ViewPager.populate(ViewPager.java:1072)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.support.v4.view.ViewPager.populate(ViewPager.java:918)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1440)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.view.View.measure(View.java:8313)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:701)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:311)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.view.View.measure(View.java:8313)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:386)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.view.View.measure(View.java:8313)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.view.View.measure(View.java:8313)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.view.View.measure(View.java:8313)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.view.ViewRoot.performTraversals(ViewRoot.java:839)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.os.Handler.dispatchMessage(Handler.java:99)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.os.Looper.loop(Looper.java:123)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at android.app.ActivityThread.main(ActivityThread.java:3683)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at java.lang.reflect.Method.invokeNative(Native Method)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at java.lang.reflect.Method.invoke(Method.java:507)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    05-02 03:28:50.266: E/AndroidRuntime(599):  at dalvik.system.NativeStart.main(Native Method)

一旦將充氣機從片段的方法(onCreateView())變成了充氣機,就不需要在所有inflater = LayoutInflater.from(this.context);上拋出錯誤的行inflater = LayoutInflater.from(this.context); 因為它是用於創建新的LayoutInflater並已經擁有一個。 嘗試刪除此行。 其他一切看起來都還可以。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM