나는 데이터를 동적으로로드하기 전에 응용 프로그램에서 페이저 탭 레이아웃을 사용한다. 만약 내가 뒤판 버튼을 클릭하면 애플리케이션이 충돌을 일으켜 솔루션을 제공해 준다.안드로이드 애플 리케이션에서 안드로이드 뷰 호출기 문제
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);
}
공유 스택 추적. –
java.lang.NullPointerException : NULL 객체 참조에 가상 메소드 'android.view.Window android.support.v4.app.FragmentActivity.getWindow()'를 호출하려고 시도했습니다. 오류 조각 getActivity(). getWindow()에서 오류가 발생했습니다. .clearFlags (WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); 이 줄의 경우 –
@SagarDeshmukh 코드에서 해당 부분을 공유 할 수 있습니까? – yrazlik