2014-06-17 2 views
0

fragmentnavigation bar입니다. "activity_spar"fragment 직전 프래그먼트에있을 때 fragment로드가 시작됩니다. 그러나 나는 추적 할 수없는 nullpointer exception을 던졌습니다.조각이 널 포인터를 던졌습니다

는이 코드를 가지고있는, line 180에 말한다 :

my_layout.addView(cb,params); 

debugger 내 PARAMS가 null없는 내 CB 중 하나 아니라는 것을 보여 주었다 통해 실행. 누구든지이 추적 방법을 설명 할 수 있습니까?

06-17 19:38:21.431: E/AndroidRuntime(25923): FATAL EXCEPTION: main 
06-17 19:38:21.431: E/AndroidRuntime(25923): Process: info.androidhive.jsonparsen, PID: 25923 
06-17 19:38:21.431: E/AndroidRuntime(25923): java.lang.NullPointerException 
06-17 19:38:21.431: E/AndroidRuntime(25923): at info.androidhive.jsonparsen.activity_Spar$downloadJsonitems.onPostExecute(activity_Spar.java:180) 
06-17 19:38:21.431: E/AndroidRuntime(25923): at info.androidhive.jsonparsen.activity_Spar$downloadJsonitems.onPostExecute(activity_Spar.java:1) 
06-17 19:38:21.431: E/AndroidRuntime(25923): at android.os.AsyncTask.finish(AsyncTask.java:632) 
06-17 19:38:21.431: E/AndroidRuntime(25923): at android.os.AsyncTask.access$600(AsyncTask.java:177) 
06-17 19:38:21.431: E/AndroidRuntime(25923): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645) 
06-17 19:38:21.431: E/AndroidRuntime(25923): at android.os.Handler.dispatchMessage(Handler.java:102) 
06-17 19:38:21.431: E/AndroidRuntime(25923): at  android.os.Looper.loop(Looper.java:136) 
06-17 19:38:21.431: E/AndroidRuntime(25923): at android.app.ActivityThread.main(ActivityThread.java:5103) 
06-17 19:38:21.431: E/AndroidRuntime(25923): at java.lang.reflect.Method.invokeNative(Native Method) 
06-17 19:38:21.431: E/AndroidRuntime(25923): at java.lang.reflect.Method.invoke(Method.java:515) 
06-17 19:38:21.431: E/AndroidRuntime(25923): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) 
06-17 19:38:21.431: E/AndroidRuntime(25923): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606) 
06-17 19:38:21.431: E/AndroidRuntime(25923): at dalvik.system.NativeStart.main(Native Method) 


//AsyncTask<Void,Void,Void> 
LinearLayout my_layout = (LinearLayout) getActivity().findViewById(R.id.sparstoretest); 
    LinearLayout my_checked_layout = (LinearLayout) getActivity().findViewById(R.id.sparstorechecked); 
    LinearLayout ImageView = (LinearLayout) getActivity().findViewById(R.id.sparstoresettings); 
    LinearLayout ImageView2 = (LinearLayout) getActivity().findViewById(R.id.sparstoresettings2); 

@Override 
    protected void onPostExecute(Void result) { 
     super.onPostExecute(result); 
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
     params.topMargin=2; 

     for (int n = 0; n < listitems.size(); n++) { 
      CheckBox cb = new CheckBox(getActivity()); 

      cb.setId(Integer.parseInt(listitems.get(n).get("cbid"))); 
      cb.setText(listitems.get(n).get("product")); 
      cb.setTextColor(Color.BLACK); 
      ImageView image = new ImageView(getActivity()); 
      image.setImageResource(R.drawable.ic_action_discard); 
      image.setId(Integer.parseInt(listitems.get(n).get("cbid"))); 
      image.setLayoutParams(params); 
      image.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(final View v) { 
        showpopup(v.getId()); 
       } 
      }); 
      Log.i("activity spar", "storename" + storename); 
      if (listitems.get(n).get("state").toString().equals("1") && listitems.get(n).get("store").toString().equals(storename)) { 
       cb.setChecked(true); 
       my_checked_layout.addView(cb,params); 
       cb.setBackgroundColor(Color.argb(255, 184, 239, 220)); 
       cb.setTextColor(Color.rgb(255, 255, 255)); 
       image.setBackgroundColor(Color.rgb(184,239,220)); 

       ImageView2.addView(image); 
      } else if (listitems.get(n).get("store").toString().equals(storename)){ 
       cb.setChecked(false); 
       cb.setBackgroundColor(Color.argb(255, 19, 202, 140)); 
       cb.setTextColor(Color.rgb(255, 255, 255)); 
       my_layout.addView(cb,params); 
       image.setBackgroundColor(Color.rgb(19,202,140)); 
       ImageView.addView(image); 
      } 
+0

OnResume 전에 이것을 호출 했습니까? my_layout은 null 일 수 있습니다. – Codeman

+0

My_layout은이 코드가있는 onPreExecute와 동일한 클래스로 설정됩니다. – user3749616

+0

** 당신은 ** 아무것도 ** null이 아니므로, 문제가 어디 있는지 추측 할 수 있습니까? 뭔가 분명히 null입니다, 당신은 단지 그것을 볼 수 없습니다 (또는 당신이 통제 할 수없는 코드 내에서 일어나는 것입니다), 그러나 한 줄의 코드로, 우리는 정말로 말할 수 없습니다 :) –

답변

0

해당 활동에 sparstoretest 레이아웃이 정의되어 있습니까? my_layout 객체가 NULL이기 때문에 nullpointer를 얻고 있습니다. 올바른 레이아웃을 부 풀리는 지 확인하고 sparstoretest가 해당 activity/fragment xml에 정의되어 있는지 확인하십시오.

+0

마지막 부분이 옳았다. 잘못된 레이아웃을 팽창 시켜서 내 레이아웃에 sparstoretest가 정의되지 않았습니다. 당신이 이것으로 당신의 대답을 바꿀 수 있다면 : return inflater.inflate (R.layout.fragment_store_spar, container, false); 나는 대답으로 설정할 수 있습니다. – user3749616

+0

제공된 코드를 이해하도록 변경했습니다. (조각 클래스의 이름을 추측 할 수있는 방법이 없습니다. @ user3749616 – antorqs

+0

;) 감사합니다. – user3749616

관련 문제