Android界面Rotation,androidrotation
投稿于 被查看 22261 次 评论:246
Android界面Rotation,androidrotation
1、这里讨论的主要是当手机界面Rotation(按ctrl+F12,手机模拟器翻转)时,如何处理数据恢复2、这里还讨论了,如何处理手机里面的联系人
1.main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android" Android:orientation="vertical" android:layout_width="fill_parent" Android:layout_height="fill_parent"> <Button Android:id="@+id/pick" android:layout_width="fill_parent" Android:layout_height="fill_parent" android:layout_weight="1" Android:text="Pick" android:enabled="true" /> <Button Android:id="@+id/view" android:layout_width="fill_parent" Android:layout_height="fill_parent" android:layout_weight="1" Android:text="View" android:enabled="false" /> </LinearLayout>
2.RotationOneActivity.java
package yyl.rotation; import Android.app.Activity; import Android.content.Intent; import Android.net.Uri; import Android.os.Bundle; import Android.view.View; import Android.widget.Button; public class RotationOneActivity extends Activity { //变量定义 static final int PICK_REQUEST = 1337; //请求码 Button viewButton = null; //按钮 Uri contact = null; //Uri //当手机界面Rotation(翻转)时,此方法重新加载www.linuxidc.com @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //根据Id得到控件对象 Button btn = (Button) findViewById(R.id.pick); //给按钮绑定单击事件监听器 btn.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { //生成一个Intent对象,这个Intent传入两个参数 //这两个参数组合的作用是,单击才按钮,显示所有联系人,单击某一联系人,再返回到本Activity,传入选中的联系人的信息 Intent i = new Intent(Intent.ACTION_PICK, Uri .parse("content://contacts/people")); //启动,这里带来一个请求码 startActivityForResult(i, PICK_REQUEST); System.out.println("pickButton onclick"); } }); //根据Id得到控件对象 viewButton = (Button) findViewById(R.id.view); //给按钮绑定单击事件监听器 viewButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { //启动新的Activity //传入两个参数,这两个参数组合的作用是,显示contact中的联系人 startActivity(new Intent(Intent.ACTION_VIEW, contact)); System.out.println("viewButton onclick"); } }); System.out.println("--> onCreate"); //判断是否需要做Activity恢复 restoreMe(savedInstanceState); //设定按钮是否可用 viewButton.setEnabled(contact != null); } //从其他相关Activity返回到本Activity是,调用该方法 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { System.out.println("onActivityResult-->" + requestCode); //判断请求码 if (requestCode == PICK_REQUEST) { //判断结果码 if (resultCode == RESULT_OK) { //调用Intent data的getData()方法,得到选中的联系人信息 contact = data.getData(); //设定按钮可用性 viewButton.setEnabled(true); } } } //当离开本Activity时,调用该方法,该方法的作用可以做一个数据保存 @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); System.out.println("onSaveInstanceState"); if (contact != null) { outState.putString("contact", contact.toString()); System.out.println("onSaveInstanceState-->" + contact.toString()); } } //恢复Activity:如果没有该方法,当界面Rotation(翻转)时,原本可用的按钮,变成不可以用,因为数据丢失无法恢复 private void restoreMe(Bundle state) { System.out.println("restoreMe"); contact = null; if (state != null) { String contactUri = state.getString("contact"); if (contactUri != null) { contact = Uri.parse(contactUri); } } } }
用户评论