0
我已經嘗試在片段內寫入asynctask,以便可以解決方向困境。到目前爲止,asynctask工作良好,但與其關聯的進度條在屏幕上發生更改,無法顯示。 我附上了我的代碼如下。 屏幕旋轉,進度和TextView的獲取隱藏片段方向處理AsyncTask
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.a_fragment, container, false);
unbinder = ButterKnife.bind(this, view);
setRetainInstance(true);
return view;
}
@OnClick(R.id.btn)
public void onViewClicked() {
Log.w(TAG, "onBtn clicked");
new URLAsyncTask().execute();
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null) {
progressBar.setVisibility(View.VISIBLE);
tvProgress.setVisibility(View.VISIBLE);
progressValue = savedInstanceState.getInt("value");
System.out.println(progressValue);
progressBar.setProgress(progressValue);
String rcv = savedInstanceState.getString("value2");
tvProgress.setText(rcv);
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("value", progressBar.getProgress());
outState.putString("value2", tvProgress.getText().toString());
}
private class URLAsyncTask extends AsyncTask<Void, Integer, String> {
@Override
protected void onPreExecute() {
progressBar.setVisibility(View.VISIBLE);
}
@Override
protected String doInBackground(Void... voids) {
String result = null;
for (int i = 0; i <= 20; i++) {
SystemClock.sleep(500);
System.out.println("Loading..... " + i);
publishProgress(i);
}
result = "A dummy";
return result;
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
progressBar.setProgress(values[0]);
progressValue = values[0];
tvProgress.setText("Loading .. at % ".concat(String.valueOf(progressValue)));
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Log.d(TAG, "onPostExecute() : s : " + s);
System.out.println(TAG + " " + progressValue);
if (progressValue == 20) {
tvProgress.setText("LOADING 100 % DONE");
progressBar.setVisibility(View.GONE);
}
}
}
} 一點幫助將高度讚賞