-1

나는 데이터를 동적으로로드하기 전에 응용 프로그램에서 페이저 탭 레이아웃을 사용한다. 만약 내가 뒤판 버튼을 클릭하면 애플리케이션이 충돌을 일으켜 솔루션을 제공해 준다.안드로이드 애플 리케이션에서 안드로이드 뷰 호출기 문제

public class AcademicFragment extends Fragment { 

    public static TabLayout tabLayout; 
    public static ViewPager viewPager; 

    //--------------------Getting degree_sought via shared Preference---------------------- 
    String stud_degree_sought; 


    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     /** 
     *Inflate academic_tab and setup Views. 
     */ 
     View x = inflater.inflate(R.layout.academic_tab, null); 
     tabLayout = (TabLayout) x.findViewById(R.id.tabs); 
     viewPager = (ViewPager) x.findViewById(R.id.viewpager); 
     /** 
     *Set an Adater for the View Pager 
     */ 

     viewPager.setAdapter(new MyAdapter(getChildFragmentManager())); 

     /** 
     * Now , this is a workaround , 
     * The setupWithViewPager dose't works without the runnable . 
     * Maybe a Support Library Bug . 
     */ 

     tabLayout.post(new Runnable() { 
      @Override 
      public void run() { 
       tabLayout.setupWithViewPager(viewPager); 
      } 
     }); 


     //--------------------Getting degree_sought via shared Preference---------------------- 
     SharedPreferences sharedPreferences = this.getActivity().getSharedPreferences(LoginActivity.SHARED_PREF_NAME, Context.MODE_PRIVATE); 
     stud_degree_sought = sharedPreferences.getString(LoginActivity.KEY_DEGREE_SOUGHT, "Not Available"); 

     return x; 

    } 

    class MyAdapter extends FragmentPagerAdapter { 

     public MyAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     /** 
     * Return fragment with respect to Position . 
     */ 


     @Override 
     public Fragment getItem(int position) { 


      //-------------------------------------Fragment for PostGraduation Tab----------------------------- 
      if (stud_degree_sought.equalsIgnoreCase("2")) { 
       switch (position) { 
        case 0: 
         return new PrimarydataFragment(); 
        case 1: 
         return new ClasstwelveFragment(); 
        case 2: 
         return new FirstyearFragment(); 
        case 3: 
         return new SecondyearFragment(); 
        case 4: 
         return new ThirdyearFragment(); 
        case 5: 
         return new FourthyearFragment(); 
       } 
      } 

      //-------------------------------------Fragment for Graduation Tab----------------------------- 
      else { 
       switch (position) { 
        case 0: 
         return new UgPrimaryFragment(); 
        case 1: 
         return new UgNinethDataFragment(); 
        case 2: 
         return new UgTenClassDataFragment(); 
        case 3: 
         return new UgTenBoardDataFragment(); 
        case 4: 
         return new UgElevenClassFragment(); 
        case 5: 
         return new UgTwelveClassFragment(); 
        case 6: 
         return new UgTwelveBoardFragment(); 
       } 

      } 
      return null; 
     } 

     @Override 
     public int getCount() { 

      return DrawerActivity.value; 

     } 

     /** 
     * This method returns the title of the tab according to the position. 
     */ 

     @Override 
     public CharSequence getPageTitle(int position) { 

      //-------------------------------------PostGraduation Tab----------------------------- 
      if (stud_degree_sought.equalsIgnoreCase("2")) { 
       Log.d("Academic switchfragment", stud_degree_sought); 
       switch (position) { 


        case 0: 
         return "Primary data"; 
        case 1: 
         return "Grade 12 Board/IB"; 
        case 2: 
         return "First Year"; 
        case 3: 
         return "Second Year"; 
        case 4: 
         return "Third Year"; 
        case 5: 
         return "Fourth Year"; 
       } 
      } 
      //-------------------------------------Graduation Tab----------------------------- 
      else { 
       switch (position) { 

        case 0: 
         return "Primary Data"; 
        case 1: 
         return "Class 9"; 
        case 2: 
         return "Class 10"; 
        case 3: 
         return "Class 10 Board"; 
        case 4: 
         return "Class 11/IB"; 
        case 5: 
         return "Class 12/IB"; 
        case 6: 
         return "Class 12 Board/IB"; 

       } 
      } 
      return null; 
     } 
    } 

} 

조각 코드

void Ugtwelveclassdata() { 

    progressbar.setVisibility(View.VISIBLE); 

    Map<String, String> params = new HashMap<String, String>(); 
    params.put("id", id); 

    CustomRequest jsObjRequest = new CustomRequest(Request.Method.POST, url, params, new Response.Listener<JSONObject>() { 

     @Override 
     public void onResponse(JSONObject response) { 
      Log.d("Volley", response.toString()); 
      progressbar.setVisibility(View.GONE); 
      getActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); 

      try { 
       success12 = response.getString("success12"); 

       if (success12.equalsIgnoreCase("1")) { 

        // HIDE THE SPINNER AFTER LOADING FEEDS 

        progressbar.setVisibility(View.INVISIBLE); 
        Log.d("1", "I am in try block success is 12 class"); 

        JSONObject primarydetailarray = response.getJSONObject("class12"); 


        total_percent = primarydetailarray.getString(Constant.TOTAL_PERCENT); 
        Log.d("total_percent", total_percent); 

        overall_rank = primarydetailarray.getString(Constant.OVERALL_RANK); 
        Log.d("overall_rank", overall_rank); 

        term_first_overall = primarydetailarray.getString(Constant.TERM_FIRST_OVERALL); 
        Log.d("overall_rank", term_first_overall); 

        term_second_overall = primarydetailarray.getString(Constant.TERM_SECOND_OVERALL); 
        Log.d("overall_rank", term_second_overall); 

        term_first_rank = primarydetailarray.getString(Constant.TERM_FIRST_RANK); 
        Log.d("overall_rank", term_first_rank); 

        term_second_rank = primarydetailarray.getString(Constant.TERM_SECOND_RANK); 
        Log.d("overall_rank", term_second_rank); 


        marksheet = primarydetailarray.getString(Constant.MARKSHEET); 
        Log.d("marksheet", marksheet); 

        ug_subject_pkey = primarydetailarray.getString(Constant.UG_SUBJECT_PKEY); 
        Log.d("pg_subject_pkey", ug_subject_pkey); 

        term = primarydetailarray.getString(Constant.TERM); 
        Log.d("pg_subject_pkey", term); 

        marks = primarydetailarray.getString(Constant.MARKS); 
        Log.d("marks", marks); 

        approve = primarydetailarray.getString("approve_status"); 
        Log.d("approve", approve); 


        if (user_type.equalsIgnoreCase("parent")) { 
         update.setVisibility(View.GONE); 

        } else { 

         update.setVisibility(View.VISIBLE); 

        } 

        if (approve.equalsIgnoreCase("1")) { 

         approvetv.setVisibility(View.VISIBLE); 
         notapprove.setVisibility(View.GONE); 
         browsebtn.setEnabled(false); 
         update.setVisibility(View.GONE); 

        } else { 

         approvetv.setVisibility(View.GONE); 
         notapprove.setVisibility(View.VISIBLE); 
         browsebtn.setEnabled(true); 
         update.setVisibility(View.VISIBLE); 


        } 


        subjectpkey = primarydetailarray.getString(Constant.SUBJECTPKEY); 
        Log.d("subjectpkey", subjectpkey); 

        acad_honour = primarydetailarray.getString(Constant.ACAD_HONOUR); 
        Log.d("acad_honour", acad_honour); 


        String getsubjectpky[] = subjectpkey.split(","); 
        System.out.println("getsubjectpky" + Arrays.toString(getsubjectpky)); 

        String mark[] = marks.split(","); 
        System.out.println("mark" + Arrays.toString(mark)); 

        String terms[] = term.split(","); 
        System.out.println("terms" + Arrays.toString(terms)); 


        ugsubjectpk = ug_subject_pkey.split(","); 
        System.out.println("pkkkkkkkkkkkkkk" + Arrays.toString(ugsubjectpk)); 


        for (int s = 0; s < getsubjectpky.length; s++) { 


         child = getLayoutInflater(null).inflate(R.layout.rownine, null); 
         mContainerView.addView(child); 
         markeltwelveclass = (EditText) child.findViewById(R.id.markgrade); 
         markeltwelveclass.setText(mark[s].trim()); 

         termtwelveclass = (EditText) child.findViewById(R.id.termnine); 
         termtwelveclass.setText(terms[s].trim()); 

         Button dltbtn = (Button) child.findViewById(R.id.deletesubject); 
         dltbtn.setVisibility(View.INVISIBLE); 

         if (getsubjectpky.length >= 4) 

         { 
          dltbtn.setVisibility(View.VISIBLE); 
         } 


         subjectspinner = (Spinner) child.findViewById(R.id.fragmentnine_edittext_subjectname); 

         subjectadapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, sub); 
         subjectadapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); 
         subjectspinner.setAdapter(subjectadapter); 


         for (int i = 0; i < subpkey.size(); i++) { 

          if (subpkey.get(i).equalsIgnoreCase(getsubjectpky[s])) { 
           subjectspinner.setSelection(i); 
          } 
         } 


         deletebtn = (Button) child.findViewById(R.id.deletesubject); 
         deletebtn.setOnClickListener(new View.OnClickListener() { 
          @Override 
          public void onClick(View view) { 


           { 

            mContainerView.removeView((View) view.getParent()); 

           } 




          } 
         }); 

        } 



        if (subjectpkey.equalsIgnoreCase("0")) { 

         for (int p = 0; p < 2; p++) { 
          View child = getLayoutInflater(null).inflate(R.layout.rownine, null); 
          mContainerView.addView(child); 

          Button dltbtn = (Button) child.findViewById(R.id.deletesubject); 
          dltbtn.setVisibility(View.INVISIBLE); 

          subjectspinner = (Spinner) child.findViewById(R.id.fragmentnine_edittext_subjectname); 

          subjectadapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, sub); 
          subjectadapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); 
          subjectspinner.setAdapter(subjectadapter); 
         } 
        } 


        twtotalpercentage.setText(total_percent); 
        twoverallrank.setText(overall_rank); 
        twaccademichonours.setText(acad_honour); 
        twfilename.setText(marksheet); 
        twtermoneovr.setText(term_first_overall); 
        twtermonerank.setText(term_first_rank); 
        twtermtwoovr.setText(term_second_overall); 
        twtermtworank.setText(term_second_rank); 


        if (twfilename.getText().toString().equalsIgnoreCase("null")) { 

         twfilename.setText(""); 

        } 


       } else { 


        update.setText("Submit"); 

        progressbar.setVisibility(View.INVISIBLE); 

        for (int p = 0; p < 3; p++) { 
         View child = getLayoutInflater(null).inflate(R.layout.rownine, null); 
         mContainerView.addView(child); 

         Button dltbtn = (Button) child.findViewById(R.id.deletesubject); 
         dltbtn.setVisibility(View.INVISIBLE); 


         subjectspinner = (Spinner) child.findViewById(R.id.fragmentnine_edittext_subjectname); 

         subjectadapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, sub); 
         subjectadapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); 
         subjectspinner.setAdapter(subjectadapter); 
        } 
        Log.d("fail", "status fail"); 
       } 

      } catch (Exception e) { 
       e.printStackTrace(); 
       showToast("Something embarrassing happened here."); 
      } 

     } 
    }, new Response.ErrorListener() { 

     @Override 
     public void onErrorResponse(VolleyError error) { 
      error.printStackTrace(); 
      VolleyLog.d("Volley", "Error: " + error.getMessage()); 
      showToast("Connection Error"); 
      progressbar.setVisibility(View.GONE); 
      getActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); 
     } 


    }); 

    //requestQueue.add(jsObjRequest); 
    // Adding request to request queue 

    jsObjRequest.setRetryPolicy(new DefaultRetryPolicy(
      30000, 
      DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
      DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 

    AppController.getInstance().addToRequestQueue(jsObjRequest); 
} 
+1

공유 스택 추적. –

+0

java.lang.NullPointerException : NULL 객체 참조에 가상 메소드 'android.view.Window android.support.v4.app.FragmentActivity.getWindow()'를 호출하려고 시도했습니다. 오류 조각 getActivity(). getWindow()에서 오류가 발생했습니다. .clearFlags (WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); 이 줄의 경우 –

+0

@SagarDeshmukh 코드에서 해당 부분을 공유 할 수 있습니까? – yrazlik

답변

0

문제는 활동이 생성되기 전에 getWindow() 메소드를 호출합니다. 대신 onActivityCreated() 방법에 전화 :

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    getActivity().getWindow().clearFlags(WindowManager.LayoutPar‌​ams.FLAG_NOT_TOUCHAB‌​LE); 
} 

이제 작동합니다 그.

+0

감사합니다. 솔루션이 효과가있었습니다. :) –

+0

제발 upvote하고 답변으로 솔루션을 받아 들일 경우 :) 감사합니다. – yrazlik

관련 문제