思路:
1.配置文件配置
2.定义个类,用来存放信息
3.用横竖屏切换方法 onConfigurationChanged()
4.横竖屏切换会掉2次OnCreate()方法,做判断,避免重复获取数据
5.两个界面layout中一个 和layout-land中一个
做法:
1.在配置文件中需要配置的类中配置
android:configChanges="orientation|keyboardHidden|screenSize"
2.定义个类 SavedInstanceState 存放信息
class SavedInstanceState {
List<String> list = new ArrayList<>();
}
3.
onConfigurationChanged()
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
savedInstanceState = new SavedInstanceState();
savedInstanceState.list = mlist;
this.setContentView(R.layout.activity_main);
}
4.获取数据要做判断
if (savedInstanceState != null)
mlist = savedInstanceState.list;
else
getData();
5.示例代码
public class MainActivity extends Activity {
SavedInstanceState savedInstanceState;
List<String> mlist;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init() {
if (savedInstanceState != null)
mlist = savedInstanceState.list;
else
getData();
}
private void getData() {
mlist = new ArrayList<>();
new Thread(new Runnable() {
@Override
public void run() {
mlist.add("1");
mlist.add("2");
mlist.add("3");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
class SavedInstanceState {
List<String> list = new ArrayList<>();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
savedInstanceState = new SavedInstanceState();
savedInstanceState.list = mlist;
this.setContentView(R.layout.activity_main);
}
}