错误 java.lang.IllegalStateException: Activity has been destroyed

4

我尝试使用Facebook SDK时遇到了问题,每次运行以下代码时似乎都会出现错误“java.lang.IllegalStateException:Activity has been destroyed”,我认为这与碎片有关,你有什么想法吗?

 11-02 15:24:29.212: E/AndroidRuntime(17034): FATAL EXCEPTION: main
 11-02 15:24:29.212: E/AndroidRuntime(17034): java.lang.RuntimeException: Unable to      start activity  ComponentInfo{com.example.facebooktest/com.example.facebooktest.FacebookTutorial}: java.lang.IllegalStateException: Activity has been destroyed

上面是错误信息,下面是代码。
package com.example.facebooktest;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.facebook.android.AsyncFacebookRunner;
import com.facebook.android.Facebook;

public class FacebookTutorial extends FragmentActivity {
    // --------- Facebook References ---------//
    private Fragment mainFragment;

    // application id from facebook.com/developers
    public static final String APP_ID = "434865303240706";
    // log tag for any log.x statements
    public static final String TAG = "FACEBOOK CONNECT";
    // permissions array
    private static final String[] PERMS = new String[] { "user_events" };
    // facebook vars
    private Facebook mFacebook;
    private AsyncFacebookRunner mAsyncRunner;
    // id text view
    private TextView mText;

    public static final int LOGIN = Menu.FIRST;
    public static final int GET_EVENTS = Menu.FIRST + 1;
    public static final int GET_ID = Menu.FIRST + 2;

    protected void initLayout() {
        LinearLayout rootView = new LinearLayout(this.getApplicationContext());
        rootView.setOrientation(LinearLayout.VERTICAL);

        this.mText = new TextView(this.getApplicationContext());
        this.mText.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT));
        rootView.addView(this.mText);

        this.setContentView(rootView);

    }

    // --------- Method called on create. ---------//

    public void onCreate(Bundle savedInstanceState) {

        if (savedInstanceState == null) {
            // Add the fragment on initial activity setup
            mainFragment = new Fragment();
            getSupportFragmentManager().beginTransaction()
                    .add(android.R.id.content, mainFragment).commit();
        } else {
            // Or set the fragment from restored state info
            mainFragment = (Fragment) getSupportFragmentManager()
                    .findFragmentById(android.R.id.content);
        }

    }

}

4
您的 onCreate 缺少 super.onCreate(savedInstanceState);,请将其放在 if 语句之前,这样应该就可以了,我相信。 - jnthnjns
1
谢谢,这是初学者的错误。 - 8BitSensei
我们都曾经历过这种情况,祝你好运! - jnthnjns
1个回答

18

你的 onCreate 缺少 super.onCreate(savedInstanceState);,将其放在 if 语句之前即可解决问题。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (savedInstanceState == null) {
        // Add the fragment on initial activity setup
        mainFragment = new Fragment();
        getSupportFragmentManager().beginTransaction()
        .add(android.R.id.content, mainFragment).commit();
    } else {
        // Or set the fragment from restored state info
        mainFragment = (Fragment) getSupportFragmentManager()
                .findFragmentById(android.R.id.content);
    }

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接