[我提交请求后,我使用Json Response中的Retrofit接收了数据。但是,当我旋转我的应用程序后,我请求的数据为Null时,用户界面会挂起。同样,我必须提出请求。请帮助我简化此过程问题将大有帮助。这是代码
[code
public class ApiClient { public static final String BASE_URL = " "; //Duplicate URL public static Retrofit retrofit=null; public static Retrofit getClient() { if(retrofit==null) { retrofit=new Retrofit.Builder().baseUrl(BASE_URL). addConverterFactory(GsonConverterFactory.create()).build(); } return retrofit; } }
片段通话在这里,我调用改造并提交值,我得到了输出,但是此后它挂起了用户界面。
] >>@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { v= inflater.inflate( R.layout.fragstaff_report, container, false ); recyclerView=(RecyclerView) v.findViewById( R.id.recyclerview_report ); layoutManager=new LinearLayoutManager(getActivity()); recyclerView.setLayoutManager(layoutManager); recyclerView.setHasFixedSize(true); datepick=(EditText) v.findViewById(R.id.from_date); datepick1=(EditText) v.findViewById(R.id.to_date); Button btn1=(Button)v.findViewById( R.id.btn_report); SharedDataUserEmail = SharedPrefManager.getInstans( getActivity() ).getUserEmail(); datepick.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Initialize a new date picker dialog fragment DialogFragment dFragment = new Fragement2.DatePickerFragment(); // Show the date picker dialog fragment dFragment.show(getFragmentManager(), "Date Picker"); startEndDAte = true; } }); datepick1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Initialize a new date picker dialog fragment DialogFragment dFragment = new Fragement2.DatePickerFragment(); // Show the date picker dialog fragment dFragment.show(getFragmentManager(), "Date Picker"); startEndDAte = false; } }); btn1.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { FromDate = datepick.getText().toString(); Date date=new Date(FromDate); SimpleDateFormat formatter=new SimpleDateFormat("YYYY-MM-dd"); FromDateLocal = formatter.format(date); ToDate = datepick1.getText().toString(); Date date1=new Date(ToDate); SimpleDateFormat formatter1=new SimpleDateFormat("YYYY-MM-dd"); DateformatTo = formatter1.format(date1); final ProgressDialog mProgressDialog = new ProgressDialog( getActivity() ); (getActivity()).getWindow().setFlags( WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE ); mProgressDialog.setIndeterminate( true ); mProgressDialog.setMessage( "Loading..." ); mProgressDialog.show(); apiInterface = ApiClient.getClient(httpClient).create( ApiInterface.class ); Call<List<VirtualFragementModel>> call = apiInterface.getEmployeeReport(FromDateLocal,DateformatTo,SharedDataUserEmail); Toast.makeText( getActivity(),"New From Date "+FromDateLocal+" To Date "+ DateformatTo+"Emailid "+SharedDataUserEmail,Toast.LENGTH_LONG).show(); call.enqueue( new Callback<List<VirtualFragementModel>>() { @Override public void onResponse(Call<List<VirtualFragementModel>> call, Response<List<VirtualFragementModel>> response) { if (mProgressDialog.isShowing()) { mProgressDialog.dismiss(); } virtualFragementModels=response.body(); employerReportAdapter=new EmployerReportAdapter(virtualFragementModels,getActivity()); recyclerView.setAdapter(employerReportAdapter); } @Override public void onFailure(Call<List<VirtualFragementModel>> call, Throwable t) { Toast.makeText( getActivity(),"Welcome error Handling Session",Toast.LENGTH_LONG ).show(); } } ); } } ); return v; }
[CODE
[我提交请求后,我使用Json Response中的Retrofit接收了数据。但是,当我旋转我的应用程序后,我请求的数据为Null时,用户界面却会挂起。同样,我必须发出请求...。
为此,您可以使用onSaveInstanceState()
和onRestoreInstanceState()
方法,因为旋转设备时,您当前的活动将完全销毁,它会通过onSaveInstanceState()
onPause()
onStop()
onDestroy()
并创建一个新活动完全通过onCreate()
onStart()
onRestoreInstanceState()
。
您可以这样保存变量: