Java 从MainActivity(开始屏幕)切换到Play screen活动。意图崩溃应用程序

Java 从MainActivity(开始屏幕)切换到Play screen活动。意图崩溃应用程序,java,android,android-intent,Java,Android,Android Intent,所以我一直在不断地搜索如何修复这个应用程序。但我似乎不明白它为什么会崩溃。我的代码对于所有关于同一问题的其他问题都是一样的,但它似乎仍然不起作用。这是我的Start screen.class文件的副本: package org.concordacademy.hangman; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log;

所以我一直在不断地搜索如何修复这个应用程序。但我似乎不明白它为什么会崩溃。我的代码对于所有关于同一问题的其他问题都是一样的,但它似乎仍然不起作用。这是我的Start screen.class文件的副本:

package org.concordacademy.hangman;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

public class MainActivity extends Activity {

    private final String MA = "Main Activity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.i(MA, "Loading Title Screen.");
    }

    // This Below Starts the Intent Push to the "Play Screen"

    public void playGame(View v) {
        Log.i(MA, "Starting Game");
        Intent pushToPlayScreen = new Intent(MainActivity.this, PlayScreen.class);
        startActivity(pushToPlayScreen);

    }

    @Override
    public void onStart() {
        super.onStart();
        Log.i(MA, "onStart");

    }

    @Override
    public void onResume() {
        super.onResume();
        Log.i(MA, "onResume");
    }

    @Override
    public void onPause() {
        super.onPause();
        Log.i(MA, "onPause");
    }

    @Override
    public void onStop() {
        super.onStop();
        Log.i(MA, "onStop");
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.i(MA, "onDestroy");
    }

}
package org.concordacademy.hangman;


import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class PlayScreen extends Activity {

    // The String Below will tell Console/LogCat the processes of The PlayScreen Activity

    private final String PS = "Play Screen";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_playscreen);
        Log.i(PS, "Loading Play Screen.");
    }

    // Read Text File entitled wordsEn.txt 
        public String readFromFile() {
            String words = "";
            // Array List That Words being added to
            ArrayList<String> wordLineArray = new ArrayList<String>();

            try { 
                InputStream inputstream = openFileInput("wordsEn.txt");
                if (inputstream != null) {
                    InputStreamReader inputStreamReader = new InputStreamReader(inputstream);
                    BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                    String receiveString = "";
                    StringBuilder stringBuilder = new StringBuilder();

                    while ( (receiveString = bufferedReader.readLine()) != null ) {
                        wordLineArray.add(receiveString);
                        stringBuilder.append(receiveString);
                    }
                    inputstream.close();
                    words = stringBuilder.toString();
                }

            }
            catch (FileNotFoundException e) {
                Log.e("login activity", "File not found: " + e.toString());
            } catch (IOException e) {
                Log.e("login activity", "Can not read file: " + e.toString());
            }

            return words;
        }

}
这是我的Playscreen.class文件:

package org.concordacademy.hangman;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

public class MainActivity extends Activity {

    private final String MA = "Main Activity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.i(MA, "Loading Title Screen.");
    }

    // This Below Starts the Intent Push to the "Play Screen"

    public void playGame(View v) {
        Log.i(MA, "Starting Game");
        Intent pushToPlayScreen = new Intent(MainActivity.this, PlayScreen.class);
        startActivity(pushToPlayScreen);

    }

    @Override
    public void onStart() {
        super.onStart();
        Log.i(MA, "onStart");

    }

    @Override
    public void onResume() {
        super.onResume();
        Log.i(MA, "onResume");
    }

    @Override
    public void onPause() {
        super.onPause();
        Log.i(MA, "onPause");
    }

    @Override
    public void onStop() {
        super.onStop();
        Log.i(MA, "onStop");
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.i(MA, "onDestroy");
    }

}
package org.concordacademy.hangman;


import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class PlayScreen extends Activity {

    // The String Below will tell Console/LogCat the processes of The PlayScreen Activity

    private final String PS = "Play Screen";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_playscreen);
        Log.i(PS, "Loading Play Screen.");
    }

    // Read Text File entitled wordsEn.txt 
        public String readFromFile() {
            String words = "";
            // Array List That Words being added to
            ArrayList<String> wordLineArray = new ArrayList<String>();

            try { 
                InputStream inputstream = openFileInput("wordsEn.txt");
                if (inputstream != null) {
                    InputStreamReader inputStreamReader = new InputStreamReader(inputstream);
                    BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                    String receiveString = "";
                    StringBuilder stringBuilder = new StringBuilder();

                    while ( (receiveString = bufferedReader.readLine()) != null ) {
                        wordLineArray.add(receiveString);
                        stringBuilder.append(receiveString);
                    }
                    inputstream.close();
                    words = stringBuilder.toString();
                }

            }
            catch (FileNotFoundException e) {
                Log.e("login activity", "File not found: " + e.toString());
            } catch (IOException e) {
                Log.e("login activity", "Can not read file: " + e.toString());
            }

            return words;
        }

}
堆栈跟踪LogCat,严重异常错误

03-01 11:11:04.921: E/AndroidRuntime(562): FATAL EXCEPTION: main
03-01 11:11:04.921: E/AndroidRuntime(562): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.concordacademy.hangman/org.concordacademy.hangman.PlayScreen}: android.view.InflateException: Binary XML file line #7: Error inflating class fragment
03-01 11:11:04.921: E/AndroidRuntime(562):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2129)
03-01 11:11:04.921: E/AndroidRuntime(562):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2154)
03-01 11:11:04.921: E/AndroidRuntime(562):  at android.app.ActivityThread.access$700(ActivityThread.java:146)
03-01 11:11:04.921: E/AndroidRuntime(562):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1260)
03-01 11:11:04.921: E/AndroidRuntime(562):  at android.os.Handler.dispatchMessage(Handler.java:99)
03-01 11:11:04.921: E/AndroidRuntime(562):  at android.os.Looper.loop(Looper.java:137)
03-01 11:11:04.921: E/AndroidRuntime(562):  at android.app.ActivityThread.main(ActivityThread.java:4949)
03-01 11:11:04.921: E/AndroidRuntime(562):  at java.lang.reflect.Method.invokeNative(Native Method)
03-01 11:11:04.921: E/AndroidRuntime(562):  at java.lang.reflect.Method.invoke(Method.java:511)
03-01 11:11:04.921: E/AndroidRuntime(562):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1043)
03-01 11:11:04.921: E/AndroidRuntime(562):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:810)
03-01 11:11:04.921: E/AndroidRuntime(562):  at dalvik.system.NativeStart.main(Native Method)
03-01 11:11:04.921: E/AndroidRuntime(562): Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class fragment
03-01 11:11:04.921: E/AndroidRuntime(562):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:710)
03-01 11:11:04.921: E/AndroidRuntime(562):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:752)
03-01 11:11:04.921: E/AndroidRuntime(562):  at android.view.LayoutInflater.inflate(LayoutInflater.java:495)
03-01 11:11:04.921: E/AndroidRuntime(562):  at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
03-01 11:11:04.921: E/AndroidRuntime(562):  at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
03-01 11:11:04.921: E/AndroidRuntime(562):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:318)
03-01 11:11:04.921: E/AndroidRuntime(562):  at android.app.Activity.setContentView(Activity.java:1920)
03-01 11:11:04.921: E/AndroidRuntime(562):  at org.concordacademy.hangman.PlayScreen.onCreate(PlayScreen.java:24)
03-01 11:11:04.921: E/AndroidRuntime(562):  at android.app.Activity.performCreate(Activity.java:5185)
03-01 11:11:04.921: E/AndroidRuntime(562):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
03-01 11:11:04.921: E/AndroidRuntime(562):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2093)
03-01 11:11:04.921: E/AndroidRuntime(562):  ... 11 more
03-01 11:11:04.921: E/AndroidRuntime(562): Caused by: java.lang.ClassCastException: org.concordacademy.hangman.GallowsFragment cannot be cast to android.app.Fragment
03-01 11:11:04.921: E/AndroidRuntime(562):  at android.app.Fragment.instantiate(Fragment.java:577)
03-01 11:11:04.921: E/AndroidRuntime(562):  at android.app.Fragment.instantiate(Fragment.java:552)
03-01 11:11:04.921: E/AndroidRuntime(562):  at android.app.Activity.onCreateView(Activity.java:4828)
03-01 11:11:04.921: E/AndroidRuntime(562):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:686)
03-01 11:11:04.921: E/AndroidRuntime(562):  ... 21 more
请回复,如果你知道如何修复它。下周我有一个项目要交,如果这个意图不起作用,那已经够糟糕的了。

你可以延长活动。如果您打算使用来自支持库的Fragment,您将必须扩展FragmentActivity,它是所有基于支持的片段的基类。api级别低于11时

替换

import android.support.v4.app.Fragment;
由此

import android.app.Fragment
注:


您的min sdk在清单中为16,因此无需扩展FragmentActivity并使用基于支持的片段。

片段导入有问题。 GallowsFragment被定义为一个SupportFragment,而在XML中它被定义为一个片段。您尤其需要编辑您的导入:

import android.support.v4.app.Fragment;
应该是:

import android.app.Fragment;

你也可以提供stacktrace吗?stacktrace是什么?还有GallowsFragment的代码是什么?添加了绞刑架的代码。你的日志中应该有很多红线,这是你的stacktrace@colin350请注意16中的min sdk,因此无需扩展FragmentActivity并使用基于支持的片段。很高兴提供帮助。如果它要在KitKat上运行,但最小API为16,我是否需要对其进行扩展?它适用于低于11的API级别
import android.support.v4.app.Fragment;
import android.app.Fragment;