ApiDemos之activity recreate方法

来源:互联网 发布:全民公敌里卫星 知乎 编辑:程序博客网 时间:2024/05/14 21:16

转载请注明出处:http://blog.csdn.net/droyon/article/details/21275797

方法注释:

/**     * Cause this Activity to be recreated with a new instance.  This results     * in essentially the same flow as when the Activity is created due to     * a configuration change -- the current instance will go through its     * lifecycle to {@link #onDestroy} and a new instance then created after it.     */    public void recreate() {        if (mParent != null) {            throw new IllegalStateException("Can only be called on top-level activity");        }        if (Looper.myLooper() != mMainThread.getLooper()) {            throw new IllegalStateException("Must be called from main thread");        }        mMainThread.requestRelaunchActivity(mToken, null, null, 0, false, null, false);    }

案例代码:

java文件:

* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package com.example.android.apis.app;import com.example.android.apis.R;import com.example.android.apis.app.LocalServiceActivities.Controller;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class ActivityRecreate extends Activity {    int mCurTheme;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        if (savedInstanceState != null) {            mCurTheme = savedInstanceState.getInt("theme");            // Switch to a new theme different from last theme.            switch (mCurTheme) {                case android.R.style.Theme_Holo_Light:                    mCurTheme = android.R.style.Theme_Holo_Dialog;                    break;                case android.R.style.Theme_Holo_Dialog:                    mCurTheme = android.R.style.Theme_Holo;                    break;                default:                    mCurTheme = android.R.style.Theme_Holo_Light;                    break;            }            setTheme(mCurTheme);        }        setContentView(R.layout.activity_recreate);        // Watch for button clicks.        Button button = (Button)findViewById(R.id.recreate);        button.setOnClickListener(mRecreateListener);    }    @Override    protected void onSaveInstanceState(Bundle savedInstanceState) {        super.onSaveInstanceState(savedInstanceState);        savedInstanceState.putInt("theme", mCurTheme);    }    private OnClickListener mRecreateListener = new OnClickListener() {        public void onClick(View v) {            recreate();        }    };}

layout文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical" android:padding="4dip"    android:gravity="center_horizontal"    android:layout_width="match_parent" android:layout_height="match_parent">    <TextView        android:layout_width="match_parent" android:layout_height="wrap_content"        android:layout_weight="0"        android:paddingBottom="4dip"        android:text="@string/activity_recreate_msg"/>    <Button android:id="@+id/recreate"        android:layout_width="wrap_content" android:layout_height="wrap_content"        android:text="@string/recreate">        <requestFocus />    </Button></LinearLayout>

效果图如下:





1 2
原创粉丝点击