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

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

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

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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

Q&A

解決済

1回答

15364閲覧

Android StudioのAVDで、アプリがstoppedになってしまう。

退会済みユーザー

退会済みユーザー

総合スコア0

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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

1グッド

1クリップ

投稿2016/07/31 09:41

「初めてのAndroid」という本(https://www.amazon.co.jp/初めてのAndroid-第4版-Ed-Burnette/dp/4873117496)を参考に、Android Studio上で、サンプルにあった「Tic Tac Toe」という三目並べゲームを作っています。

アプリをRunさせると、Gradleは、「BUILD SUCCESSFUL」となるのですが、
AVD上では、「Unfortunately,UT3 has stopped.」となってしまいます。

log cat のエラーは、一番下に載せていますが、この中で、
at org.example.tictactoe.MainActivity.onCreate(MainActivity.java:11)
とか、
java.lang.ClassNotFoundException: Didn't find class "org.example.tictactoe.MainFragment"
の部分が怪しいのではないかと思います。

コードを見てみると、下記のMainFragment.javaの中の「public class MainFragment ...」の部分でエラーが出ています。そこには、
「Missing package statement:'org.example.tictactoe'
Detects package statements that do not correspond to the project directory structure and reports classes without package statements.」と書いてありました。

java

1//MainFragment.java 2import android.os.Bundle; 3import android.support.v4.app.Fragment; 4import android.support.v7.app.AlertDialog; 5import android.view.LayoutInflater; 6import android.view.View; 7import android.view.ViewGroup; 8 9import org.example.tictactoe.R; 10 11public class MainFragment extends Fragment { //←MainFragmentの部分でエラーが出ています。 12 13 private AlertDialog mDialog; 14 15 @Override 16 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 17 View rootView = inflater.inflate(R.layout.fragment_main, container, false); 18 View aboutButton = rootView.findViewById(R.id.about_button); 19 aboutButton.setOnClickListener(new View.OnClickListener(){ 20 @Override 21 public void onClick(View view){ 22 AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 23 builder.setTitle(R.string.about_title); 24 builder.setMessage(R.string.about_text); 25 builder.setCancelable(false); 26 builder.setPositiveButton(R.string.ok_label, null); 27 mDialog = builder.show(); 28 } 29 /* 30 @Override 31 public void onPause(){ 32 super.onPause(); 33 if (mDialog != null) 34 mDialog.dismiss(); 35 } 36 */ 37 }); 38 return rootView; 39 } 40} 41

そして、activity_main.xmlは、下記のコードですが、
「class="org.example.tictactoe.MainFragment"」のMainFragmentの部分で、
「Cannnot resolve symbol 'MainFragment'
Validate resources references inside Android XML files.」
というエラーが出ています。

xml

1<!--activity_main.xml--> 2<?xml version="1.0" encoding="utf-8"?> 3<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 android:clipChildren="false" 8 tools:context=".MainActivity"> 9 10 <fragment 11 android:id="@+id/main_fragment" 12 class="org.example.tictactoe.MainFragment" <!--←ここでエラーが出ています。--> 13 android:layout_width="wrap_content" 14 android:layout_height="wrap_content" 15 android:layout_gravity="center" 16 tools:layout="@layout/fragment_main" /> 17</FrameLayout> 18

おそらく、上記二点に問題があるのだと思うのですが、まだどうしたら良いか分からずにいます。

念のため、MainActivity.javaは、下記のとおりです。

java

1//MainActivity.java 2package org.example.tictactoe; 3 4import android.support.v7.app.AppCompatActivity; 5import android.os.Bundle; 6 7public class MainActivity extends AppCompatActivity { 8 9 @Override 10 protected void onCreate(Bundle savedInstanceState) { 11 super.onCreate(savedInstanceState); 12 setContentView(R.layout.activity_main); 13 } 14}

お分かりの方、ご教示頂ければ幸いです。
よろしくお願いいたします。

なお、log catに表示されたエラーは、下記のとおりでした。(10,000文字までしか掲載できないので、org.example.tictactoeに絡んだ所のみピックアップして載せてあります。)

07-31 08:44:17.581 2718-2718/org.example.tictactoe E/AndroidRuntime: FATAL EXCEPTION: main

Process: org.example.tictactoe, PID: 2718 java.lang.RuntimeException: Unable to start activity ComponentInfo{org.example.tictactoe/org.example.tictactoe.MainActivity}: android.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating class fragment at org.example.tictactoe.MainActivity.onCreate(MainActivity.java:11) at org.example.tictactoe.MainActivity.onCreate(MainActivity.java:11)  Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment org.example.tictactoe.MainFragment: make sure class name exists, is public, and has an empty constructor that is public at org.example.tictactoe.MainActivity.onCreate(MainActivity.java:11)  Caused by: java.lang.ClassNotFoundException: Didn't find class "org.example.tictactoe.MainFragment" on path: DexPathList[[zip file "/data/app/org.example.tictactoe-2/base.apk"],nativeLibraryDirectories=[/data/app/org.example.tictactoe-2/lib/x86, /vendor/lib, /system/lib]] at org.example.tictactoe.MainActivity.onCreate(MainActivity.java:11)  Suppressed: java.lang.ClassNotFoundException: Didn't find class "org.example.tictactoe.MainFragment" on path: DexPathList[[dex file "/data/data/org.example.tictactoe/files/instant-run/dex/slice-support-annotations-23.4.0_0d031f4d8f962a0ec1d140e2bf15815497962a73-classes.dex", dex file "/data/data/org.example.tictactoe/files/instant-run/dex/slice-slice_9-classes.dex", dex file "/data/data/org.example.tictactoe/files/instant-run/dex/slice-slice_8-classes.dex", dex file "/data/data/org.ex
av-👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

MainFragment.java に package指定 package org.example.tictactoe;が無いからのように見えます。

「Missing package statement:'org.example.tictactoe'

Detects package statements that do not correspond to the project directory structure and reports classes without package statements.」

これもまさにそういう警告かと思います。

投稿2016/07/31 09:49

flied_onion

総合スコア2604

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

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

退会済みユーザー

退会済みユーザー

2016/07/31 09:56

早急にご回答頂き、ありがとうございました。 MainFragment.javaの最初に、 package org.example.tictactoe; と記述したら、うまく動きました。 本書のサンプルコードにはこの部分の記載がなかったのですが、Javaでは、この記述が当然に必要なのですね。
flied_onion

2016/07/31 10:30

どのパッケージに属するかというのはjavaでは重要ですね。 通常はディレクトリ構造と一致させます。MainFragment.javaは `org/example/ticatactoe/MainFragment.java`という場所にあると思います。 外部からあるクラスを指定するような場合は、そのパッケージ込みでクラスを指定します(newするとき) ソース上は毎回 org.example・・・ とか書いていられませんので、先頭に import を記述して、「見当たらないクラスはimportで指定したパッケージからも探せ」とコンパイラに指定しておきます。 ファイルを新規作成すると大抵はIDE(AndroidStudioなど)が場所に応じてpackageを自動的に挿入してくれますので、本では省略してあったのかもしれませんね。
退会済みユーザー

退会済みユーザー

2016/07/31 11:15

よく分かりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問