Java 在android活动中将类声明放置在onCreate之外时出现致命错误
我是android编程新手,在我的一项活动中,我有以下几点 我想声明如下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();
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();