Я искал это решение на этом сайте, но, похоже, я не могу решить эту проблему. В основном я создал меню слайдов в ActionBarActivity, когда один из элементов (построенных из ListView) в меню слайдов щелкнул, он показывает значение TextView. Но когда ориентация изменилась (телефон повернулся), контент был сброшен. Я на уровне API 19 (KitKat)Содержимое ActionBarActivity сбрасывается при изменении ориентации - DrawerLayout
Все коды:
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBarDrawerToggle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.TextView;
public class MainActivity extends ActionBarActivity {
private TextView textview;
private ListView navList;
private DrawerLayout mDrawerLayout;
private ArrayAdapter<String> mAdapter;
private ActionBarDrawerToggle mDrawerToggle;
private String mActivityTitle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
navList = (ListView) findViewById(R.id.navList);
textview = (TextView) findViewById(R.id.textview);
isiElementList(); // isi elemen2 list, dan add masing2 click event.
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mActivityTitle = getTitle().toString();
}
private void isiElementList() {
String[] osArray = {"Android", "iOS", "Windows"};
mAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, osArray);
navList.setAdapter(mAdapter);
navList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String text = navList.getItemAtPosition(position).toString();
textview.setText(text);
}
});
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.onConfigurationChanged(newConfig);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Activate the navigation drawer toggle
// Pass elemen2 ListView ke Drawer
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Я попытался:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
Также:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.activity_main);
}
Не работает, некоторые другие решения также пытались, но не повезло. Благодаря
Вам необходимо сохранить последний выбранный элемент в onSaveInstanceState и соответственно отреагировать в onCreate. Независимо от того, что вы делаете, избегайте onConfigurationChanged и android: configChanges, как правило, это плохая практика, возникающая из-за неправильного понимания того, как работает система ... –
Спасибо, но я не уверен, как я это делаю, я относительно не знаком с Android UI, от качающегося фона. ..: \ –
Его хорошо хранить выбранный индекс или идентификатор и вызывать метод onItemSelected (имена разные, но вы получаете точку) в onCreate. Google onSaveInstanceState, вы наверняка найдете хороший учебник. –