简体   繁体   English

杀死一项活动并开始另一项活动时,android应用程序崩溃

[英]android app crashes when killing one activity and start another one

There is one button I set in Scene2.java .I want to use the button to get in other activities Scene3.java , GameOver.java Everything worked fine until its about to open the new activity,every time the app crashed there. 我在Scene2.java设置了一个按钮。我想使用该按钮进行其他活动Scene3.javaGameOver.java每次应用程序崩溃时,一切正常,直到即将打开新活动。 I want to know if there're any mistake I made in the connection,which I mean the newIntent and getIntent in Scene2.java GameOver.java and Scene3.java 我想知道我在连接中是否有任何错误,我的意思是Scene2.java GameOver.javaScene3.javanewIntentgetIntent

Scene2.java Scene2.java

package com.group5.littlered;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.drawable.ColorDrawable;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class Scene2 extends Activity {

    MediaPlayer bird;
    MediaPlayer bgm;

    int position = 0;
    String[] conversation;
    TextView frame;
    ImageView conframe;
    final String[] ListStr = { "Wake up and ask her", "Peek her secretly" };
    int plot = 0;

    @Override
    public void onBackPressed() {
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        // Remove title bar
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);

        // Remove notification bar
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.activity_scene2);
        Intent intent1 = getIntent();

        conversation = getResources().getStringArray(R.array.scene2);
        frame = (TextView) findViewById(R.id.textView1);

        Button next = (Button) findViewById(R.id.wtf);
        next.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                if (position < 2) {

                    String sentence = conversation[position];

                    frame.setText(sentence + "");
                    position++;
                } else {
                    if (plot < 1) {
                        AlertDialog choice = new AlertDialog.Builder(
                                Scene2.this).create();
                        choice.setTitle("Pick a choice");
                        choice.setMessage("   ");
                        choice.setButton("Get up and ask her what happened",
                                new DialogInterface.OnClickListener() {

                                    @Override
                                    public void onClick(DialogInterface dialog,
                                            int which) {
                                        // TODO Auto-generated method stub
                                        plot = 1;
                                    }
                                });

                        choice.setButton2("Peek her secretly",
                                new DialogInterface.OnClickListener() {

                                    @Override
                                    public void onClick(DialogInterface dialog,
                                            int which) {
                                        // TODO Auto-generated method stub

                                        plot = 2;
                                        position = 4;
                                    }
                                });

                        choice.show();

                    } else {

                        if (plot < 2) {
                            if (position < 4) {
                                String sentence = conversation[position];
                                frame.setText(sentence + "");
                                position++;
                            } else {
                                Intent intent2 = new Intent(Scene2.this,
                                        GameOver.class);
                                startActivity(intent2);
                                finish();
                            }
                        } else {
                            if (position < 6) {
                                String sentence = conversation[position];
                                frame.setText(sentence + "");
                                position++;
                            } else {
                                Intent intent3 = new Intent(Scene2.this,
                                        Scene3.class);
                                startActivity(intent3);
                                finish();

                            }
                        }
                    }

                }
            }

        });

        // BGM
        bgm = MediaPlayer.create(Scene2.this, R.raw.voyager);
        bgm.setLooping(true);
        bgm.start();

        // bird
        bird = MediaPlayer.create(Scene2.this, R.raw.bird);
        bird.setLooping(false);
        bird.start();

    }
}

Scene3.java Scene3.java

package com.group5.littlered;

import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class Scene3 extends Activity {


    int position = 0;
    String[] conversation;
    TextView frame;
    ImageView conframe;

    @Override
    public void onBackPressed() {


    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        // Remove title bar
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);

        // Remove notification bar
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.activity_scene3);
        Intent intent3 = getIntent();

        conversation = getResources().getStringArray(R.array.scene1);
        frame = (TextView) findViewById(R.id.textView1);

        Button next = (Button) findViewById(R.id.wtf);
        next.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                if (position < 6) {

                    String sentence = conversation[position];

                    frame.setText(sentence + "");
                    position++;
                } else {




                    {

                    }

                }
            }

        });



    }

}

Again sorry for my poor ENGLISH, plz tell me what I need to post more to help you understand my problem. 再次对我可怜的英语感到抱歉,请告诉我我需要发表更多信息以帮助您理解我的问题。

my logcat 我的logcat

04-30 09:37:39.497: E/AndroidRuntime(4862): FATAL EXCEPTION: main
04-30 09:37:39.497: E/AndroidRuntime(4862): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.group5.littlered/com.group5.littlered.Scene3}: java.lang.NullPointerException
04-30 09:37:39.497: E/AndroidRuntime(4862):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
04-30 09:37:39.497: E/AndroidRuntime(4862):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
04-30 09:37:39.497: E/AndroidRuntime(4862):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
04-30 09:37:39.497: E/AndroidRuntime(4862):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
04-30 09:37:39.497: E/AndroidRuntime(4862):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-30 09:37:39.497: E/AndroidRuntime(4862):     at android.os.Looper.loop(Looper.java:137)
04-30 09:37:39.497: E/AndroidRuntime(4862):     at android.app.ActivityThread.main(ActivityThread.java:5103)
04-30 09:37:39.497: E/AndroidRuntime(4862):     at java.lang.reflect.Method.invokeNative(Native Method)
04-30 09:37:39.497: E/AndroidRuntime(4862):     at java.lang.reflect.Method.invoke(Method.java:525)
04-30 09:37:39.497: E/AndroidRuntime(4862):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
04-30 09:37:39.497: E/AndroidRuntime(4862):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
04-30 09:37:39.497: E/AndroidRuntime(4862):     at dalvik.system.NativeStart.main(Native Method)
04-30 09:37:39.497: E/AndroidRuntime(4862): Caused by: java.lang.NullPointerException
04-30 09:37:39.497: E/AndroidRuntime(4862):     at com.group5.littlered.Scene3.onCreate(Scene3.java:45)
04-30 09:37:39.497: E/AndroidRuntime(4862):     at android.app.Activity.performCreate(Activity.java:5133)
04-30 09:37:39.497: E/AndroidRuntime(4862):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
04-30 09:37:39.497: E/AndroidRuntime(4862):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
04-30 09:37:39.497: E/AndroidRuntime(4862):     ... 11 more

The line that is crashing is the line 45 of Scene3 : 崩溃的行是Scene3的第45 Scene3

Button next = (Button) findViewById(R.id.wtf);  
next.setOnClickListener(new View.OnClickListener() { // <-- THIS ONE
    ...
});

The cause is a NullPointerException . 原因是NullPointerException This means that the identifier "wtf" exists in R (this wouldn't compile otherwise) but is not found in the layer activity_scene3 , as we wave the following statement line 38 of Scene3.onCreate() : 这意味着标识符“ wtf”存在于R (否则将无法编译),但在activity_scene3层中找不到,因为我们挥动了Scene3.onCreate()的以下语句行38:

setContentView(R.layout.activity_scene3); // and later on findViewById() returns `null`

You have to revisit this layout to ensure that the Button you are willing to access to actually exists, with the ID wtf . 您必须重新访问此布局,以确保您愿意访问的Button确实存在,其ID为wtf

Generally speaking, this is the danger in using a same ID in different layouts. 一般来说,在不同布局中使用相同的ID会有危险。 This is prone to hide errors that would easily be found otherwise as this would just not compile. 这很容易隐藏错误,否则将很容易发现这些错误,因为它们只是无法编译。

Check your manifest file and add Scene3.java in it 检查清单文件并在其中添加Scene3.java

<activity 
android:name=".Scene3" >
</activity>

Always post question with exception, second this is may be you have not mention your other activity in manifest file like: 总是例外地发布问题,其次是您可能没有在清单文件中提及您的其他活动,例如:

<activity
android:name=".Scene3">
</activity>


<activity
    android:name=".GameOver">
    </activity>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Android应用程式在一次活动中当机 - Android app crashes on one activity 转到其他活动时,Android应用程序崩溃 - Android app crashes when moving to another activity 从一个活动移动到另一个活动时,Android 应用程序崩溃 - Android App crashed when moving from one activity to another 杀死/恢复应用程序后,Android DialogFragment 和无法启动活动 ComponentInfo - Android DialogFragment and Unable to start activity ComponentInfo after killing/restoring app 从Android中的另一个应用程序启动一个应用程序的活动 - Start Activity of one application from another application in android 当我将代码从一个应用程序移动到另一个应用程序时,用于编辑Google电子表格的Android应用程序崩溃 - Android app to edit google spread sheet crashes when I moved code from one application to another Android应用程序崩溃onPause()-一个项目中的逻辑工作在另一个项目中失败 - Android App Crashes onPause() — Logic Works in One Project Fails in Another 当调用另一个活动时,Android-完全停止一个活动 - Android-Fully stop one activity when another activity is called 启动另一个活动时应用程序崩溃 - App crashes when launching another activity 从Android应用程序的操作栏中选择菜单选项时,将数据从一个活动传递到另一个活动 - Passing data from one activity to another when choosing a menu option from action bar in Android app
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM