0

I am new to android and it is my first time to use Fragments. When this fragment is called and the user searches for some question in the "search_question" edittext and presses on the "search_question_button", the searched question should be passed to the following class "PaperlessRegistrationApplication" however the application stops when the line "app.getOpeContentSearchQuestion(userQuestion, this);" is reached. I will highly appreciate it if anyone could assist on this. Thank you.

 package com.redone.pplr.opecontent.ui;

        import android.app.Activity;
        import android.content.Context;
        import android.os.Bundle;
        import android.support.v4.app.ListFragment;
        import android.text.TextUtils;
        import android.util.Log;
        import android.view.LayoutInflater;
        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.ArrayAdapter;
        import android.widget.Button;
        import android.widget.EditText;
        import android.widget.ListView;
        import android.widget.TextView;

        import com.redone.pplr.R;
        import com.redone.pplr.app.PaperlessRegistrationApplication;
        import com.redone.pplr.opecontent.model.OpeContentModel;

        import java.util.List;


        /**
         * Created by user on 2/12/2015.
         */
        public class OpeContentFragment extends ListFragment implements OpeContentListener {
            private PaperlessRegistrationApplication app;
            private EditText search_question;
            private TextView error;
            private Button search_question_button;
            private int visibility = View.VISIBLE;
            private int gone = View.GONE;
            private String userQuestion;
            private ListView opeContentList;
            protected List<OpeContentModel> arrayOfList = null;
            protected RowAdapter objAdapter;//instance of the rowadapter class


            public OpeContentFragment() {
            }

            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
                View view = inflater.inflate(R.layout.ope_content_fragment, container, false);
                search_question = (EditText) view.findViewById(R.id.search_question);
                error = (TextView) view.findViewById(R.id.error);
                search_question_button = (Button) view.findViewById(R.id.search_question_button);
                opeContentList = (ListView) view.findViewById(android.R.id.list);



                //when the search question button is clicked
                search_question_button.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        userQuestion = search_question.getText().toString();
                        if (!TextUtils.isEmpty(userQuestion)) {
                            error.setVisibility(gone);
                            opeContentSearchQuestion(userQuestion);

                        } else {
                            error.setText("No Question was Searched");
                            error.setVisibility(visibility);
                        }
                    }
                });
                return view;
            }

            public void opeContentSearchQuestion(String userQuestion) {
                Log.e("SearchQuestion", userQuestion);
                app.getOpeContentSearchQuestion(userQuestion, this);
            }

            @Override
            public void onSearchMostViewedQuestions(List<OpeContentModel> result) {
                objAdapter = new RowAdapter(getActivity(), R.layout.ope_content_list_item,
                        arrayOfList);
                opeContentList.setAdapter(objAdapter);
            }

            //custom adapter class implementation which reuses existing views as user scrolls
            class RowAdapter extends ArrayAdapter<OpeContentModel> {
                Context context;
                protected List<OpeContentModel> items;
                protected Activity activity;
                protected int row;//list_item_products
                protected OpeContentModel objBean;

                public RowAdapter(Activity act, int resource,
                                  List<OpeContentModel> arrayoflist) {
                    super(act, resource, arrayoflist);
                    this.activity = act;
                    this.row = resource;
                    this.items = arrayoflist;
                }

                //getview method is called for each item of ListView
                @Override
                public View getView(final int position, View convertView,
                                    ViewGroup parent) {
                    //a++;
                    View view = convertView;// single child element of the listview
                    ViewHolder holder = null;// a holder to temp layouts
                    // if the convertView is null, create a new view
                    if (view == null) {
                        // create a new view
                        //inflate the layout for each item of listview
                        LayoutInflater inflater = (LayoutInflater) activity
                                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                        view = inflater.inflate(row, null);
                        holder = new ViewHolder();
                        view.setTag(holder);
                    } else {
                        // resue the row to display newly generated data/recycle
                        holder = (ViewHolder) view.getTag();
                    }

                    if ((items == null) || ((position + 1) > items.size()))
                        return view;
                    objBean = items.get(position);

                    holder.question = (TextView) view.findViewById(R.id.ope_content_question);
                    holder.answer = (TextView) view.findViewById(R.id.ope_content_answer);

                    if(holder.question != null && objBean.getQuestion() != null){
                        holder.question.setText(objBean.getQuestion());
                    }

                    if(holder.answer != null && objBean.getAnswer() != null){
                        holder.answer.setText(objBean.getAnswer());
                    }
                    return view;
                }


                // create a temporary textview/imageview/varaible for store id by id
                public class ViewHolder {
                    public TextView question;
                    public TextView answer;
                }
            }
        }

I am getting the following error

    02-14 11:11:50.719    1238-1238/com.redone.pplr D/dalvikvm﹕ GC_FOR_ALLOC freed 170K, 8% free 6771K/7344K, paused 5ms, total 5ms
    02-14 11:11:50.727    1238-1238/com.redone.pplr W/IInputConnectionWrapper﹕ getTextAfterCursor on inactive InputConnection
    02-14 11:11:50.819    1238-1238/com.redone.pplr D/pplr_SalesKitCntentLst﹕ getContent|response|{"contentList":[],"message":null,"messageCode":null,"status":"success"}
    02-14 11:11:50.831    1238-1241/com.redone.pplr D/dalvikvm﹕ GC_CONCURRENT freed 324K, 8% free 6856K/7384K, paused 1ms+1ms, total 6ms
    02-14 11:11:50.839    1238-1238/com.redone.pplr W/IInputConnectionWrapper﹕ finishComposingText on inactive InputConnection
    02-14 11:11:50.943    1238-1238/com.redone.pplr W/IInputConnectionWrapper﹕ finishComposingText on inactive InputConnection
    02-14 11:11:55.531    1238-1238/com.redone.pplr I/GCM﹕ Error :SERVICE_NOT_AVAILABLE
    02-14 11:11:57.883    1238-1238/com.redone.pplr E/SearchQuestion﹕ i
    02-14 11:11:57.883    1238-1238/com.redone.pplr D/AndroidRuntime﹕ Shutting down VM
    02-14 11:11:57.887    1238-1238/com.redone.pplr W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xa613b908)
    02-14 11:11:57.891    1238-1238/com.redone.pplr E/AndroidRuntime﹕ FATAL EXCEPTION: main
        java.lang.NullPointerException
                at com.redone.pplr.opecontent.ui.OpeContentFragment.opeContentSearchQuestion(OpeContentFragment.java:74)
                at com.redone.pplr.opecontent.ui.OpeContentFragment$1.onClick(OpeContentFragment.java:61)
                at android.view.View.performClick(View.java:4204)
                at android.view.View$PerformClick.run(View.java:17355)
                at android.os.Handler.handleCallback(Handler.java:725)
                at android.os.Handler.dispatchMessage(Handler.java:92)
                at android.os.Looper.loop(Looper.java:137)
                at android.app.ActivityThread.main(ActivityThread.java:5041)
                at java.lang.reflect.Method.invokeNative(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:511)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
                at dalvik.system.NativeStart.main(Native Method)
Jens
  • 67,715
  • 15
  • 98
  • 113
Ahmed
  • 11
  • 2
  • 2
    possible duplicate of [What is a Null Pointer Exception, and how do I fix it?](http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do-i-fix-it) – Jens Feb 14 '15 at 12:23

1 Answers1

1

app is never initialize. you have to initilize this object.

Jens
  • 67,715
  • 15
  • 98
  • 113