归结为拯救一个州,我很困惑.所以我知道onSaveInstanceState(Bundle)当活动即将被销毁时会被调用.但是,如何将信息存储在其中并将其恢复到原始状态onCreate(Bundle savedInstanceState)?我不明白这个捆绑包将如何恢复信息.如果有人可以提供一个例子,那将会很有帮助.开发指南没有很好地解释这一点.
public class Conversation extends Activity {
private ProgressDialog progDialog;
int typeBar;
TextView text1;
EditText edit;
Button respond;
private String name;
private String textAtView;
private String savedName;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.dorothydialog);
text1 = (TextView)findViewById(R.id.dialog);
edit = (EditText)findViewById(R.id.repsond);
respond = (Button)findViewById(R.id.button01);
if(savedInstanceState != null){
savedInstanceState.get(savedName);
text1.setText(savedName);
}
else{
text1.setText("Hello! What is your name?");
respond.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
name = edit.getText().toString();
text1.setText("Nice to meet you "+ name);
}
});
} …Run Code Online (Sandbox Code Playgroud) 我有一个Activity带ViewPager.在ViewPager有很多的网页,就像一本书.每个片段都有RecyclerViews很多内容.以下是我的用例
1 - 当我滑动页面时,RecyclerView必须从列表的开头开始.2.如果我旋转设备,它应该从旋转之前离开的位置的确切位置读取.
如果我不使用任何逻辑,第二种情况可以完美运行.即旋转.但不是第一种情况.
如果我做一些如下的逻辑.有助于实现第一种情况,但不是第二种情况.
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
if (savedInstanceState==null) {
mIsFirstTime = true;
}
}
@Override
public void onResume() {
super.onResume();
try {
getActivity().invalidateOptionsMenu();
if (!mIsFirstTime) {
mListView.scrollToPosition(0);
}
} catch (Exception e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是
如何确定片段重启是由于屏幕旋转还是Viewpager滑动?
我已经试过了onConfigurationChanged(Configuration newConfig).但它对我没有帮助.请你帮助我好吗
android rotation android-configchanges android-viewpager android-recyclerview