我希望在旋转屏幕时阻止创建音符对象。 我知道在轮换后会创建一个新活动,框架会在销毁该活动之前保存所有可编辑的小部件数据。
我有一个取消按钮,当我不旋转屏幕时工作正常。 当我旋转屏幕时,外部其他激活。
@Override
protected void onPause() {
super.onPause();
if (mIsCancelling) {
if (mIsNewNote) {
Log.d(TRACE_TAG, "onPause() : mIsCancelling == true && mIsNewNote == true => DataManager.removeNote(position:" + mNotePosition + ")");
DataManager.getInstance().removeNote(mNotePosition);
}
else {
Log.d(TRACE_TAG, "onPause() : mIsCancelling == true && mIsNewNote == false => storePreviousNoteValues()");
storePreviousNoteValues();
}
} else {
Log.d(TRACE_TAG, "onPause() : mIsCancelling == false => saveNote()");
saveNote();
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
Log.d(TRACE_TAG, "onSaveInstanceState(outState)");
super.onSaveInstanceState(outState);
outState.putString(ORIGINAL_NOTE_COURSE_ID, mOriginalNoteCourseId);
outState.putString(ORIGINAL_NOTE_TITLE, mOriginalNoteTitle);
outState.putString(ORIGINAL_NOTE_TEXT, mOriginalNoteText);
}
private void restoreOriginalNoteValues(Bundle savedInstanceState) {
Log.d(TRACE_TAG, "restoreOriginalNoteValues(savedInstanceState)");
mOriginalNoteCourseId = savedInstanceState.getString(ORIGINAL_NOTE_COURSE_ID);
mOriginalNoteTitle = savedInstanceState.getString(ORIGINAL_NOTE_TITLE);
mOriginalNoteText = savedInstanceState.getString(ORIGINAL_NOTE_TEXT);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_note);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mSpinnerCourses = (Spinner) findViewById(R.id.spinner_courses);
List<CourseInfo> courses = DataManager.getInstance().getCourses();
ArrayAdapter<CourseInfo> adapterCourses =
new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, courses);
adapterCourses.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mSpinnerCourses.setAdapter(adapterCourses);
Log.d(TRACE_TAG, "OnCreate(savedInstanceState) => readDisplayStateValues()");
readDisplayStateValues();
if (savedInstanceState == null) {
Log.d(TRACE_TAG, "OnCreate(savedInstanceState) : savedInstanceState == null => saveOriginalNoteValues()");
saveOriginalNoteValues();
}
else {
Log.d(TRACE_TAG, "OnCreate(savedInstanceState) : savedInstanceState != null => restoreOriginalNoteValues(savedInstanceState)");
restoreOriginalNoteValues(savedInstanceState);
}
mTextNoteTitle = (EditText) findViewById(R.id.text_note_title);
mTextNoteText = (EditText) findViewById(R.id.text_note_text);
if (!mIsNewNote) {
Log.d(TRACE_TAG, "OnCreate(savedInstanceState) : mIsNewNote == false => displayNote(...)");
displayNote(mSpinnerCourses, mTextNoteTitle, mTextNoteText);
}
}
答案 0 :(得分:0)
在Manifest文件的Activity标记中,您应该提及
<activity
android:name="com.example.MainActivity"
android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation">
如果您使用的是Android 2.3(API级别13)及以上,请使用
<activity
android:name="com.example.Activity"
android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation|screenSize">
或者您可以覆盖此方法
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onRestoreInstanceState(savedInstanceState);
}