請看看下面的代碼片段國家不救,當設備旋轉
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import android.widget.Toast;
public class InputFragment extends Fragment {
private SeekBar daysAsCustomerSeek;
private View view;
//Following variables will save the application state and load back
//on resume
private final String DAYS_AS_CUSTOMER_VALUE_HOLDER = "days as customer value";
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
//Intializing instance variables
view = inflater.inflate(R.layout.input, container,false);
daysAsCustomerSeek = (SeekBar)view.findViewById(R.id.days_as_customer_seekbar);
//Set default max values
daysAsCustomerSeek.setMax(210);
Log.d("MY_TAG", "Re Created");
return view;
}
//This method will save the instances
@Override
public void onSaveInstanceState(Bundle savedInstanceStateBundle)
{
super.onSaveInstanceState(savedInstanceStateBundle);
savedInstanceStateBundle.putInt(DAYS_AS_CUSTOMER_VALUE_HOLDER, daysAsCustomerSeek.getProgress());
Log.d("SAVE_LOG", "Instances saved");
}
//This method will restore the instances
@Override
public void onActivityCreated(Bundle savedInstanceStateBundle)
{
super.onActivityCreated(savedInstanceStateBundle);
if(savedInstanceStateBundle!=null)
{
daysAsCustomerSeek.setProgress(savedInstanceStateBundle.getInt(DAYS_AS_CUSTOMER_VALUE_HOLDER));
}
Log.d("LOAD_LOG", "Instances loaded");
}
}
當電話的朝向改變(當某一個旋轉設備)這個代碼不恢復保存狀態。但是當後退按鈕被按下時它會發生。我發現爲什麼這種情況發生在Logs上。
12-23 16:41:36.623: D/SAVE_LOG(13078): Instances saved
12-23 16:41:45.332: D/MY_TAG(13078): Re Created
12-23 16:41:45.332: D/LOAD_LOG(13078): Instances loaded
12-23 16:41:45.352: D/LOAD_LOG(13078): Instances loaded
12-23 16:41:45.842: D/MY_TAG(13078): Re Created
正如您所見,它將onCreateView()
稱爲最後一種方法。因此,所有在onActivityCreated()
中完成的操作都被撤消。我試圖通過在onCreateView()
末尾添加恢復代碼來解決此問題,但通過說Bundle
爲NULL
而失敗。
我該如何解決這個問題?
onSaveInstance? –
我的意思onSAveInstance()。回答編輯 –
你有看過代碼嗎?我已經使用它 –