Java 在android活动中将类声明放置在onCreate之外时出现致命错误

Java 在android活动中将类声明放置在onCreate之外时出现致命错误,java,android,android-activity,logcat,Java,Android,Android Activity,Logcat,我是android编程新手,在我的一项活动中,我有以下几点 我想声明如下 AllJokes afrag = new AllJokes(); OneLiners olfrag = new OneLiners(); selectFragment sfrag = new selectFragment(); RaceJokes rfrag = new RaceJokes(); YoMammaJokes yfrag = new YoMammaJokes();

我是android编程新手,在我的一项活动中,我有以下几点

我想声明如下

    AllJokes afrag = new AllJokes();
    OneLiners olfrag = new OneLiners();
    selectFragment sfrag = new selectFragment();
    RaceJokes rfrag = new RaceJokes();
    YoMammaJokes yfrag = new YoMammaJokes();
    LongJokes lfrag = new LongJokes();
    setContentView(R.layout.browse);
在onCreate之外,以便我可以在底部的addAllJones方法中使用它。但是,这会导致以下错误

E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.Ayman.jokeit, PID: 3685
    java.lang.StackOverflowError
            at java.lang.ref.FinalizerReference.<init>(FinalizerReference.java:42)
            at java.lang.ref.FinalizerReference.add(FinalizerReference.java:54)
            at android.os.StrictMode$InstanceTracker.<init>(StrictMode.java:2244)
            at android.os.StrictMode.trackActivity(StrictMode.java:1946)
            at android.app.Activity.<init>(Activity.java:760)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:11)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:14)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:14)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:14)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:14)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:14)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:14)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:14)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:14)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:14)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:14)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:14)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:14)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:14)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:14)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:14)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:14)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:14)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:14)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:14)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:14)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:14)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:14)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:14)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:14)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:14)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseActivity.<init>(BrowseActivity.java:14)
            at com.Ayman.jokeit.selectFragment.<init>(selectFragment.java:14)
            at com.Ayman.jokeit.BrowseA

感谢您的帮助。

在外部声明它们,但在onCreate中启动:

放在外面

立即创建


谢谢!这解决了问题。如果你有空闲时间,你能解释一下为什么有必要在onCreate中启动它们吗?
package com.Ayman.jokeit;

import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;


    public class BrowseActivity extends Activity{

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            AllJokes afrag = new AllJokes();
            OneLiners olfrag = new OneLiners();
            selectFragment sfrag = new selectFragment();
            RaceJokes rfrag = new RaceJokes();
            YoMammaJokes yfrag = new YoMammaJokes();
            LongJokes lfrag = new LongJokes();
            setContentView(R.layout.browse);

            //Creats object for fragments



            //steps for adding fragment to view
            FragmentManager smanager = getFragmentManager();
            FragmentTransaction stransaction = smanager.beginTransaction();
            stransaction.add(R.id.browse_layout, sfrag, "selectFragment");
            stransaction.commit();


            //steps for adding fragment to view
            FragmentManager olmanager = getFragmentManager();
            FragmentTransaction oltransaction = olmanager.beginTransaction();
            oltransaction.add(R.id.browse_layout, olfrag, "onelinerFragment");
            oltransaction.commit();
        }
        public void addAllJokes(){

        }

    }
  AllJokes afrag;
    OneLiners olfrag;
    selectFragment sfrag ;
    RaceJokes rfrag;
    YoMammaJokes yfrag ;
    LongJokes lfrag ;
 afrag = new AllJokes();
olfrag = new OneLiners();
sfrag = new selectFragment();
rfrag = new RaceJokes();
yfrag = new YoMammaJokes();
lfrag = new LongJokes();