質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

742閲覧

AndroindStudio setContentViewを使うとアプリがクラッシュ?します。

hacchan

総合スコア14

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2018/06/13 07:25

編集2018/06/13 10:30

前提・実現したいこと

いつもお世話になっております。

AndroidStudioで簡単なゲームを作っています。

setOnClickListenerを使った処理を書いたところ、
実機で動作確認をすると、
「アプリは停止しました」というメッセージが出てしまい、動きません。

AndroidStudio上ではエラーは表示されません。

初めてsetOnClickListenerに挑戦しようとした矢先のことで、
途方に暮れています。。

よろしくお願いいたします。

該当のソースコード

Java

1 2package com.hachiya.candyzombie; 3 4import android.app.Activity; 5import android.content.pm.ActivityInfo; 6import android.os.Bundle; 7import android.view.View; 8import android.widget.ImageButton; 9 10public class MainActivity extends Activity { 11 12 @Override 13 protected void onCreate(Bundle savedInstanceState) { 14 super.onCreate(savedInstanceState); 15 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 16 17 setScreenStart(); 18 } 19 20 public void setScreenStart() { 21 setContentView(R.layout.activity_screenstart); 22 23 ImageButton startButton = findViewById(R.id.start_button); 24 25 startButton.setOnClickListener(new View.OnClickListener() { 26 @Override 27 public void onClick(View v) { 28 setScreenRetry(); 29 } 30 }); 31 } 32 33 private void setScreenRetry() { 34 setContentView(R.layout.activity_screenretry); 35 } 36}

xml

1<!--activity_screenstart.xml--> 2 3<?xml version="1.0" encoding="utf-8"?> 4<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 5 xmlns:tools="http://schemas.android.com/tools" 6 android:layout_width="match_parent" 7 android:layout_height="match_parent" 8 android:orientation="vertical" 9 android:gravity="center" 10 tools:context=".MainActivity"> 11 12 <ImageButton 13 android:id="@+id/start_button" 14 android:layout_width="wrap_content" 15 android:layout_height="wrap_content" 16 android:background="@drawable/start" 17 android:gravity="center" /> 18 19</LinearLayout>

xml

1<!--activity_screenretry.xml--> 2 3<?xml version="1.0" encoding="utf-8"?> 4<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 5 xmlns:tools="http://schemas.android.com/tools" 6 android:layout_width="match_parent" 7 android:layout_height="match_parent" 8 android:orientation="vertical" 9 android:gravity="center" 10 tools:context=".MainActivity"> 11 12 <ImageButton 13 android:id="@+id/retry_button" 14 android:layout_width="wrap_content" 15 android:layout_height="wrap_content" 16 android:background="@drawable/retry" 17 android:gravity="center" /> 18 19</LinearLayout>

補足

アプリ起動→スタート画面→スタートボタンを押す→リトライ画面
という流れをまず作りたいです。

再補足(エラーログ?)

LogcatでErorrを選択して、実機でアプリを起動させてみるとこのように表示されます。
見方がよくわからないため、全コピーしてあります。
見づらくて申し訳ありません。

06-13 19:14:18.286 30745-30745/? E/Zygote: isWhitelistProcess - Process is Whitelisted
06-13 19:14:18.286 30745-30745/? E/libpersona: scanKnoxPersonas
Couldn't open the File - /data/system/users/0/personalist.xml - No such file or directory
06-13 19:14:18.624 30745-30745/com.hachiya.candyzombie E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.hachiya.candyzombie, PID: 30745
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.hachiya.candyzombie/com.hachiya.candyzombie.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageButton.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2957)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6940)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageButton.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
at com.hachiya.candyzombie.MainActivity.setScreenStart(MainActivity.java:24)
at com.hachiya.candyzombie.MainActivity.onCreate(MainActivity.java:16)
at android.app.Activity.performCreate(Activity.java:7174)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2910)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032) 
at android.app.ActivityThread.-wrap11(Unknown Source:0) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696) 
at android.os.Handler.dispatchMessage(Handler.java:105) 
at android.os.Looper.loop(Looper.java:164) 
at android.app.ActivityThread.main(ActivityThread.java:6940) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

keicha_hrs

2018/06/13 08:50

ご提示いただいたコードを丸写ししてエミュレーターと実機の両方で動かしましたが、正常に動作しており、問題を再現できません。そちらの環境ではどうしても落ちるということであれば、エラーログの提示も必要でしょう。
hacchan

2018/06/13 10:38

情報ありがとうございます。改めて実機2機で動かしたのですが、やはりどちらも「アプリは停止しました」と出てしまいます。エラーログと思われるものを載せてみました。よろしくお願いいたします。
keicha_hrs

2018/06/13 11:38

NullPointerExceptionが出ていますね。なんでだろ?activity_screenstart.xmlとactivity_screenretry.xmlが、実際のファイルの内容が入れ違いになっていたりしませんか?
hacchan

2018/06/13 14:47

ありがとうございます!お言葉がヒントになりまして動きました!xmlファイルなのですが、今回はMainActivity.javaで横画面に固定したので、横画面用のxmlだけ処理を書けば良いと思っていたのですが、もしやそれが間違いでしょうか?縦画面用のxmlファイルにも同じ処理を書いたところ、アプリが動くようになりました。
keicha_hrs

2018/06/13 15:06

こちらはそのようなことをせずとも動いていますけどね。まあ、動いたのなら良し・・・ですかね?
hacchan

2018/06/13 16:36

丁寧に解答していただきありがとうございました。動きましたので、良しとします。エラーログについて調べるきっかけにもなりました。ありがとうございました!
guest

回答1

0

自己解決

指摘していただいたことを元に検証した結果、
横画面用のxml(long)にだけボタンを配置していたことが原因のようでした。
縦画面用のxmlにも適当にボタンを配置したところ、正常に動くようになりました。

ありがとうございました。

投稿2018/06/15 06:11

hacchan

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問