2016-05-25 8 views
0
public class JsonViewpager { 
private VolleySingleton mVolleySingleton; 
private ViewpagerAdapter mViewpagerAdapter; 
private RequestQueue mRequestQueue; 
private String mUrl; 
private ArrayList<QuestionData> mQuestionDataArrayList = new  ArrayList<QuestionData>(); 

public JsonViewpager(ViewpagerAdapter viewpagerAdapter,String url){ 
    mViewpagerAdapter=viewpagerAdapter; 
    mUrl=url; 
} 
public void JsonRequestMethod() { 
    mVolleySingleton = VolleySingleton.getInstance(); 
    mRequestQueue = mVolleySingleton.getRequestQueue(); 
    JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, mUrl, (String) null, new Response.Listener<JSONArray>() { 
     @Override 
     public void onResponse(JSONArray response) { 
      Parse parseJSONResponse=new Parse(); 
      mQuestionDataArrayList = parseJSONResponse(response); 
      mViewpagerAdapter.setBloglist(mQuestionDataArrayList); 
     } 

    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
     } 
    }); 
    mRequestQueue.add(request); 
} 
} 

私はviewPagerAdapterを渡している別のクラスを持っています。なぜなら何らかの理由で他のクラスのonCreateViewのviewPagerAdapterを設定していて、mViewpagerAdapter.setBloglist(mQuestionDataArrayList);ライン。誰がこれを引き起こしているか知っていますか?customAdapterを渡そうとするとヌルポインタ例外が発生しますか?

ホームクラス

public class Home extends Fragment { 
private static final int REFRESH_DELAY=500; 
private static final String ARG_PARAM1 = "param1"; 
private static final String ARG_PARAM2 = "param2"; 
//URL reflects ordered list on server filter terms {"include": {"relation": "questions", "scope": {"order" : "points DESC"}}}) 
private static final String URL_HOME="hiddenUrl"; 

private String mParam1; 
private String mParam2; 
private ImageView mImageView; 
private VolleySingleton mVolleySingleton; 
private RequestQueue mRequestQueue; 
private RecyclerView mRecyclerView; 

private ArrayList<QuestionData> mListblogs = new ArrayList<>(); 
private ArrayList<QuestionData> mQuestionDataArrayList = new  ArrayList<QuestionData>(); 
private PullToRefreshView mPullToRefreshView; 
private ViewpagerAdapter mViewpagerAdapter; 

public static Home newInstance(String param1, String param2) { 
    Home fragment = new Home(); 
    Bundle args = new Bundle(); 
    args.putString(ARG_PARAM1, param1); 
    args.putString(ARG_PARAM2, param2); 
    fragment.setArguments(args); 
    return fragment; 

} 

public Home() { 
    // Required empty public constructor 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (getArguments() != null) { 
     mParam1 = getArguments().getString(ARG_PARAM1); 
     mParam2 = getArguments().getString(ARG_PARAM2); 
    } 
    //If you wish to handle you event source in the activity main thread, you’ll need to add the following instructions at the beginning of the onCreate() android callback: 
    System.out.println("userId" + Login.getUserId()); 
    System.out.println("username" + Login.getUserName()); 
    JsonViewpager s=new JsonViewpager(mViewpagerAdapter,URL_HOME); 
    s.JsonRequestMethod(); 
} 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View view = inflater.inflate(R.layout.fragment_home, container, false); 
    mRecyclerView = (RecyclerView) view.findViewById(R.id.fragment_dashboard_recycler); 
    mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 
    mViewpagerAdapter = new ViewpagerAdapter(getActivity()); 

    mRecyclerView.setAdapter((mViewpagerAdapter)); 
    mPullToRefreshView = (PullToRefreshView) view.findViewById(R.id.pull_to_refresh); 

    mPullToRefreshView.setOnRefreshListener(new PullToRefreshView.OnRefreshListener() { 
     @Override 
     public void onRefresh() { 
      mPullToRefreshView.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        mPullToRefreshView.setRefreshing(false); 
        JsonRequestMethod(); 
       } 
      }, REFRESH_DELAY); 
     } 
    }); 
    return view; 
} 
} 
+0

唯一の方法です。 –

+0

私はそれがヌル参照を渡していると思いますが、理由は分かりません。 – Eli

+0

たとえば、null参照を渡しているクラスにこのリクエストを入れた場合、それは – Eli

答えて

1

あなたはonCreate方法で

JsonViewpager s=new JsonViewpager(mViewpagerAdapter,URL_HOME); 

を呼び出し、そしてonCreateView方法で、その後

mViewpagerAdapter = new ViewpagerAdapter(getActivity()); 

されています。

問題は、アクティビティのライフサイクルでは、onCreateVeiwmViewpagerAdapterの値にnullを渡して自分のJsonViewepagerオブジェクトが作成されたことを意味し、onCreate後に来るということです。 referenceについては

:このオブジェクトをインスタンス化したクラスは `null`なのでを通過した場合

enter image description here

+0

素晴らしいです、ありがとう、私はしばらくのライフサイクルを見直していない、ありがとう! – Eli

関連する問題