FragmentPage处的空指针异常

时间:2014-11-03 10:52:48

标签: android nullpointerexception

我在运行时得到一个空指针异常错误。我在下面的编码中提到错误行。我发布了相关的代码。我无法解决这个问题。如果你知道如何解决,任何人都可以帮助我谢谢你。

StackTrace:

11-03 05:14:58.729: E/AndroidRuntime(18247): java.lang.NullPointerException
11-03 05:14:58.729: E/AndroidRuntime(18247):    at com.qrme.FragmentPage.highlightCell(FragmentPage.java:473)
11-03 05:14:58.729: E/AndroidRuntime(18247):    at com.qrme.FragmentPage.moveToNext(FragmentPage.java:455)
11-03 05:14:58.729: E/AndroidRuntime(18247):    at com.qrme.FragmentPage$10.onItemClick(FragmentPage.java:351)
11-03 05:14:58.729: E/AndroidRuntime(18247):    at android.widget.AdapterView.performItemClick(AdapterView.java:299)
11-03 05:14:58.729: E/AndroidRuntime(18247):    at android.widget.AbsListView.performItemClick(AbsListView.java:1113)
11-03 05:14:58.729: E/AndroidRuntime(18247):    at android.widget.AbsListView$PerformClick.run(AbsListView.java:2904)
11-03 05:14:58.729: E/AndroidRuntime(18247):    at android.widget.AbsListView$3.run(AbsListView.java:3638)
11-03 05:14:58.729: E/AndroidRuntime(18247):    at android.os.Handler.handleCallback(Handler.java:733)
11-03 05:14:58.729: E/AndroidRuntime(18247):    at android.os.Handler.dispatchMessage(Handler.java:95)
11-03 05:14:58.729: E/AndroidRuntime(18247):    at android.os.Looper.loop(Looper.java:136)
11-03 05:14:58.729: E/AndroidRuntime(18247):    at android.app.ActivityThread.main(ActivityThread.java:5017)
11-03 05:14:58.729: E/AndroidRuntime(18247):    at java.lang.reflect.Method.invokeNative(Native Method)
11-03 05:14:58.729: E/AndroidRuntime(18247):    at java.lang.reflect.Method.invoke(Method.java:515)
11-03 05:14:58.729: E/AndroidRuntime(18247):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
11-03 05:14:58.729: E/AndroidRuntime(18247):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
11-03 05:14:58.729: E/AndroidRuntime(18247):    at dalvik.system.NativeStart.main(Native Method)

FragmentPage.java:

public class FragmentPage extends Fragment {

    GridView gridTable;
static LinearLayout ll;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

         rootView = inflater.inflate(R.layout.fragmentxml, container, false);

        initialize(rootView);
        clickEvents();

        return rootView;

    }


    @Override
    public void onResume() {
        // TODO Auto-generated method stub
        super.onResume();

    tablelist = DatabaseQueryHelper.getInstance().getContentTable(pageId);
        System.out.println(tablelist);
        System.out.println(pageId);
        if (tablelist != null && !tablelist.isEmpty()) {
            CustomeTableAdapter tableAdapter = new CustomeTableAdapter(
                    getActivity(), R.layout.frame_table, tablelist);
            gridTable.setAdapter(tableAdapter);

        } else {
            ll.setVisibility(View.GONE);
            if(tableVisible && !getactivitytable)
            {
                if (tablelist == null
                        || tablelist.isEmpty()
                        && sharedpreference.get_sharedvalue(
                                QRMConstants.VERSION).equals("1.0")) {
                    showDialog();


                }

            }
        }

    }


public void initialize(View v) {


        gridTable = (GridView) rootView.findViewById(R.id.gridViewTable);
        ll.setVisibility(View.GONE);

        gridTable.setDrawSelectorOnTop(true);

    }

public void moveToNext(int nextposition) {

        highlightCell(nextposition); --->455 th line error
        ispaused = false;
        play(nextposition);

    }

gridTable.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    final int position, long id) {
                if (tablelist != null && !tablelist.isEmpty()) {
                    ll.setVisibility(View.VISIBLE);
                    player.reset();
                    currentSelection = position;
                    moveToNext(currentSelection); --->351 th line error
                } else {
                    ll.setVisibility(View.GONE);
                }
            }
        });

public void highlightCell(int position) {

        for (int i = 1; i < tablelist.size(); i++) {

            gridTable.getChildAt(i - 1)
                    .setBackgroundResource(R.drawable.border); ---->473 rd line Error

        }

        gridTable.getChildAt(position).setBackgroundColor(
                getResources().getColor(R.color.dusty_grey));

    }

fragmentxml.xml:

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

    <LinearLayout
    android:id="@+id/linearlayoutControll"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:background="@color/light_grey"
    android:gravity="center"
    android:orientation="horizontal" >

    <ImageButton
        android:id="@+id/imagebuttonLast"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:background="@drawable/ic_action_previous"
        android:scaleType="fitXY" />
      </LinearLayout>
      <GridView
        android:id="@+id/gridViewTable"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/linearlayoutControll"
        android:layout_alignParentTop="true"
        android:layout_margin="15dp"
        android:listSelector="#00000000"
        android:numColumns="2"
        android:rotationY="180" >
    </GridView>

</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

我认为这是因为此行返回null

gridTable.getChildAt(i - 1)

我不知道什么是tablelist,但基本上我猜想如果你试图从gridview中取出未在屏幕上绘制的项目,它们将为null。