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

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

ただいまの
回答率

88.92%

Androidアプリでの画面遷移

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,338

hashimoyakumo

score 15

前提・実現したいこと

アンドロイドアプリの画面遷移

発生している問題・エラーメッセージ

画面遷移時に強制終了が起きてしまいます。
色々なサイトをみてAndroidManifestを追記したりコードを書き直したりしているのですが上手くいきません。
どなたかお力添えいただけないでしょうか?よろしくお願いいたします。

追記
logcatのエラーの先頭には下記の様に出力されていました。

18274-18274/jp.hashimoto.hashimoto.randamsumabura E/UncaughtException: java.lang.RuntimeException: Unable to start activity ComponentInfo{jp.hashimoto.hashimoto.randamsumabura/jp.hashimoto.hashimoto.randamsumabura.CharaSlotActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

該当のソースコード

MainActivity.java

package jp.hashimoto.hashimoto.randamsumabura;
//インポートは省略
public class MainActivity extends Activity {
    //変数の宣言
    private LoopEngine loopEngine = new LoopEngine();//ハンドラ用
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final Button btn = (Button) findViewById(R.id.Change_button);
        final Button charabtn=(Button) findViewById(R.id.button_chara_battle);//画面遷移ボタン
        btn.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                if(loopEngine.isUpdate==false) {
                    loopEngine.start();
                    btn.setText("STOP!");
                }
                else if(loopEngine.isUpdate==true) {
                    loopEngine.stop();
                    btn.setText("SELECT");
                }
            }
        });
    //画面遷移ボタン
        charabtn.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                Chara_button_OnClickListener(v);
            }});
    }
    public void Chara_button_OnClickListener(View v) {
        //SubActivityを起動します。
        Intent intent = new Intent(this,jp.hashimoto.hashimoto.randamsumabura.CharaSlotActivity.class);
        startActivityForResult(intent,0);
    }


上記のMainActivityから下記のCharaSlotActivity(サブアクテビティ)に遷移したい
CharaSlotActivity.java

package jp.hashimoto.hashimoto.randamsumabura;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class CharaSlotActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activitycharaslot);
        final Button btn = (Button) findViewById(R.id.button_CF_mi);
    }
}

試したこと

AndroidManifestに下記の様に追記しました。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jp.hashimoto.hashimoto.randamsumabura" >

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <meta-data android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version"/>

        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".CharaSlotActivity"></activity>//遷移先の登録(追記箇所)


デバッグをしたところ、遷移先のCharaSlotActivity.javaの下記のコードをステップオーバーした直後にアプリが落ちている感じでした。多くのボタンやテキストをレイアウトに置いているのでそのせいで落ちた可能性もあるのでしょうか?

setContentView(R.layout.activitycharaslot);


追記:
起動したときに最初に表示される画面を遷移先のレイアウトにしたところ同様に強制終了が起きましたのでlayoutに問題がありそうなのですがレイアウトファイルをみてもわたしの力ではエラーを発見することが出来ませんでしたので遷移先のレイアウトファイルを載せさせていただきます。非常に長いコードで申し訳ありません。文字数制限にひっかかってしまいますのでアップローダーに上げさせていただきました。activitycharaslot.xml

補足情報(言語/FW/ツール等のバージョンなど)

言語 Androidjava
環境 AndroidStudio 2.3
デバッグ環境 実機Nexus5(Android 6.0)

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • yona

    2017/03/30 09:13

    エラーログを追記してください。

    キャンセル

  • yona

    2017/03/30 09:13

    レイアウトファイルを追記してください

    キャンセル

回答 4

checkベストアンサー

0

こちら多分テーマがあってないです。
AppThemeは何でしょうか?

MainActivityはActivity、 CharaSlotActivityがAppCompatActivityだけど利用Themeは同じなのでエラーってるかと。

とりいそぎ確認するというところで、CharaSlotActivity.javaを以下に修正してみたらどうですか?

public class CharaSlotActivity extends AppCompatActivity {
↓
public class CharaSlotActivity extends Activity {

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/30 19:34

    修正してみたところ強制終了が起こらずに正常に表示できるようになりました!
    まさかActivityのテーマの不一致が原因だとは考えもしませんでした・・・
    本当に助かりました。有難うございます。他の回答者様も回答して下さりこころよりお礼申し上げます。

    キャンセル

  • 2017/03/30 19:58

    ようございました。
    AppCompat関連はTheme.AppCompat系を利用してくださいませ。動的でなければAndroidManifest.xmlで各activity単位でandroid:themeから設定できますです。知っていれば余計ですいません。

    キャンセル

0

画面遷移時に強制終了

Activityの遷移は、記述が?なところもありますが
機能していると思います。

private LoopEngine loopEngine = new LoopEngine();//ハンドラ用

ここは具体的にどうしているのでしょうか
またこれは遷移先と関係していますか?

これを除外して確認してみるとか

多くのボタンやテキストをレイアウトに置いているのでそのせいで落ちた可能性もあるのでしょうか?

全く無いとは言い切れませんが
CharaSlotActivityを起動直後の画面に設定してみれば分かることです

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/30 16:02

    ご回答ありがとうございます。LoopEngineの部分は遷移先には関係しておりません。また、コメントアウトして動作を確認したところ強制終了するのは改善されませんでした。

    キャンセル

0

レイアウトファイルの名前は何でしょうか?

setContentView(R.layout.activitycharaslot);

で落ちるということですが、レイアウトファイルの名前がactivitycharaslotではない、ということはありますか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/30 15:58

    ご回答ありがとうございます。確認したところ名前はあっているようでした

    キャンセル

0

「activitycharaslot.xml」の中身が正しいか見直してください。
ランタイムエラーなので、以下でレイアウト描画できなかった可能性が高いです。

setContentView(R.layout.activitycharaslot);

見直した結果、どうしても解決できない場合は「activitycharaslot.xml」の中身を質問欄に追記してください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/30 15:59

    ご回答ありがとうござます。見直したのですがエラーや強制終了の原因が私の力では見つけることが出来ませんでしたのでactivitycharaslot.xmlの中身を追記させて頂きました。

    キャンセル

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

  • ただいまの回答率 88.92%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る