Java 如何在启动新活动时修复连续的logcat消息?

Java 如何在启动新活动时修复连续的logcat消息?,java,android,android-activity,Java,Android,Android Activity,我正在用java创建一个android应用程序,并观看了YouTube频道android Authority关于此的教程,他用另一个java文件替换了启动活动的layout.xml文件。此外,这些活动扩展了活动而不是AppCompactActivity。我所做的一切都是一样的,我正试图使用意图和startActivity(意图)从这一点开始另一项活动。然而,这样做会导致logcat输出一个连续的文本流,试图创建一个新的活动,但它从未成功,屏幕仍然显示在第一个活动上 我尝试过启动另一个具有.xml

我正在用java创建一个android应用程序,并观看了YouTube频道android Authority关于此的教程,他用另一个java文件替换了启动活动的layout.xml文件。此外,这些活动扩展了活动而不是AppCompactActivity。我所做的一切都是一样的,我正试图使用意图和startActivity(意图)从这一点开始另一项活动。然而,这样做会导致logcat输出一个连续的文本流,试图创建一个新的活动,但它从未成功,屏幕仍然显示在第一个活动上

我尝试过启动另一个具有.xml布局文件的活动,并且成功了。问题似乎出在.java布局文件上。我在网上没有发现任何人有同样的问题

起始班:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
    setContentView(new MainMenuView(this));
}
MainMenuView类:

public MainMenuView(Context context){
    super(context);
    mContext = context;
    activity = (Activity) mContext;
    intent = new Intent(activity.getBaseContext(), FileSelect.class);

    getHolder().addCallback(this);
    thread = new MainThread(getHolder(), this);
    setFocusable(true);
}

@Override
public void surfaceCreated(SurfaceHolder holder) {
    thread.start();
}

public void newActivity(){
    if (thingy){ //assigned true when a button is pressed
        thingy = false; 
        mContext.startActivity(intent);
        activity.finish();
    }
}
public FileSelectView(Context context){
    super(context);
    mContext = context;
    activity = (Activity) mContext;
    getHolder().addCallback(this);

    thread = new MainThreadTwo(getHolder(), this);
    setFocusable(true);
}

@Override
public void surfaceCreated(SurfaceHolder holder) {
    thread.start();
}
二等舱:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
    setContentView(new FileSelectView(this));
}
FileSelectView类:

public MainMenuView(Context context){
    super(context);
    mContext = context;
    activity = (Activity) mContext;
    intent = new Intent(activity.getBaseContext(), FileSelect.class);

    getHolder().addCallback(this);
    thread = new MainThread(getHolder(), this);
    setFocusable(true);
}

@Override
public void surfaceCreated(SurfaceHolder holder) {
    thread.start();
}

public void newActivity(){
    if (thingy){ //assigned true when a button is pressed
        thingy = false; 
        mContext.startActivity(intent);
        activity.finish();
    }
}
public FileSelectView(Context context){
    super(context);
    mContext = context;
    activity = (Activity) mContext;
    getHolder().addCallback(this);

    thread = new MainThreadTwo(getHolder(), this);
    setFocusable(true);
}

@Override
public void surfaceCreated(SurfaceHolder holder) {
    thread.start();
}
MainThread类(MainThread和MainThreadTwo实际上是相同的):

“fd=”数字增加一,并且:

D/ViewRootImpl@3ed1b35[MainMenu]: dispatchAttachedToWindow
D/ViewRootImpl@3ed1b35[MainMenu]: Relayout returned: oldFrame=[0,0][0,0] newFrame=[0,0][1280,800] result=0x1 surface={isValid=false 0} surfaceGenerationChanged=false

如果有人能理解这里发生的事情,这将非常有帮助。如果有人不理解问题的部分内容,我将尝试帮助/重新措辞。为什么这些输出消息不断出现,为什么新的活动没有出现

在while中(在MainThread类中),当变量达到某个条件后,需要将其running设置为false。你的应用程序进入了无限循环,这就是为什么你的日志中有很多消息,而活动没有出现。

没有,我尝试了这个,但消息仍在继续,活动没有出现。我在线程的while循环中使用System.out.println(“foo”)来检查日志,看看线程是否仍在运行。线程停止,logcat消息继续。很抱歉,我无法帮助您。。我觉得奇怪的是this.mainMenuView.newActivity(),因为它看起来会再次调用startActivity并一次又一次地进入主线程周期。我发现有趣的是,我可以从XML文件布局活动中毫无问题地启动starting activity类,但当我尝试启动第二个类时,同样的问题也会出现。这让我觉得我尝试启动的课程有问题,但我不知道它与第一个活动有何不同。