Android実行時のエラー(実機にて)

このQ&Aのポイント
  • Androidアプリ開発初心者の方が作成中のアプリでエラーが発生し、スマホのアプリが強制終了する問題が発生しています。
  • 書籍『アプリを作ろう! ゼロから学ぶアプリの作成から公開まで Android2.3~4.1対応』に記載されているサンプルアプリを作成中にエラーが起こりました。
  • 具体的には、『OmikujiActivity.java』というファイルの4行目である『action_settings』の部分が表示されず、代わりに選択されてしまっています。これが原因で実機での表示が正常に行われず、アプリが強制終了する問題が発生しています。
回答を見る
  • ベストアンサー

Android実行時のエラー(実機にて)

Androidアプリ開発初心者の者です。 下記に記載しています書籍のアプリを 作成中にエラーが起こりスマホのアプリが強制終了と いう形で落ちてしまいます。 【アプリを作ろう! ゼロから学ぶアプリの作成から公開まで Android2.3~4.1対応】  http://ec.nikkeibp.co.jp/item/books/P96130.html Eclipseのコード画面は以下のようになっています。 【OmikujiActivity.java】 package makeApplication.omikuji; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class OmikujiActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 文字を表示する TextView tv = (TextView) findViewById(R.id.action_settings); tv.setText("おみくじアプリ"); } } 下から4行目のaction_settingsの部分は書籍では補完候補で、 hellow_view:int - R.idがポップアップ表示されているのですが、 現在私のコード画面には表示されず、仕方なくaction_settingsを選択しています。 上記で保存し実行すると、スマホの実機の方で「おみくじ」と表示されず、 そのまま強制終了してしまい再度実行を促されてしまいます。 action_settingsの部分が原因なのかどうかよく 分からないのでお詳しい方ぜひ教えて頂きたいです。 宜しくお願い致します。

  • Java
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • hirotn
  • ベストアンサー率59% (147/246)
回答No.2

XMLのTextView要素を以下のようにすると、R.idからTextViewが参照できるようになります。 <TextView android:id="@+id/textview" ←追加しました。 android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> OmikujiActivity.java TextView tv = (TextView) findViewById(R.id.textview);

takapito
質問者

お礼

上記のように入力したら、スマホ画面で 動作を確認できました! ありごとうございます。 本当に助かりました^^。

その他の回答 (1)

  • hirotn
  • ベストアンサー率59% (147/246)
回答No.1

本がないのでプログラムから解ることをお答させていただきます。 画面デザインでTextViewコンポーネントを配置していますか? なければ配置します。 TextView tv = (TextView) findViewById(R.id.action_settings); 右辺の引数には、TextViewコンポーネントのインスタンス名が入ると考えられます。

takapito
質問者

補足

ご回答ありがとうございます。 とても助かります! 画面デザインとはmain.xmlの事でよいでしょうか? 現在レイアウト画面は以下のようになっています。 【main.xml】 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".OmikujiActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> </RelativeLayout>

関連するQ&A

  • androidのオプションメニューについて

    androidアプリの作り方を勉強しているのですが、オプションメニューを実装しようと思いonCreateOptionMenuを書いたのですが、エミュレータでメニューボタンを押してもメニューが現れません。onCreateOptionMenu内でTextViewの文字を変更するようにしたのでが、TextViewは変更されず、そもそもonCreateOptionMenuがスルーされているようです。だれか、わかる方がいたらご教授お願いします。 以下ソースです。 シンプルにしたのですが問題がわかりません。 import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; public class Test04Activity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public boolean onCreateOptionMenu(Menu menu){ super.onCreateOptionsMenu(menu); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); return true; } }

  • 自作アンドロイドアプリで足し算できない

    プログラミングの初心者ですがアンドロイドアプリを作ってみたいと思って練習しています。 練習用のアプリを作りエミュレーターで表示させたいのですがうまくいきません。 プログラムのどこかが間違っているのでしょうか? eclipse上ではエラーのマークなどは出ておらす、エミュレーターもちゃんと起動されますが、 アプリ起動直後にエミュレーター画面内に強制終了の画面が出て計算結果が表示されません。 OS Windows7 64bit --------------------------------- package in.andante.android.CalAppli; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class CalAppliActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); int i1; int i2; int i3; i1 = 1; i2 = 2; i3 = i1+i2; tv.setText(i3); setContentView(i3); } } よろしくお願いします

    • ベストアンサー
    • Java
  • androidのアプリを作ってるんですが

    import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.Menu; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.TextView; import android.content.Intent; import android.widget.ImageView; public class GameActivity extends Activity implements OnTouchListener{ private ImageView target; @Override protected void onCreate(Bundle savedInstanceState) { target = (ImageView)findViewById(R.id.imageView1); super.onCreate(savedInstanceState); setContentView(R.layout.activity_game); target.setOnTouchListener(this); } @Override public boolean onTouch(View v, MotionEvent motion) { switch(motion.getAction()) { case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_UP: break; } return true; } } これからゲーム本体を作っていこうとしてるんですが、onTouchメソッドを実装してから実機で動作しなくなり、先に進めず困っています。なぜこれで動作しないのか私の知識不足でよくわかりません。 回答お願いいたします。

    • ベストアンサー
    • Java
  • Androidプログラミング アプリが停止する

    eclipseでボタンを押すと画像が表示されるアプリをつくろうとしていましたがボタンをを押すとポップアップで「~を停止します。」と表示されアプリが落ちてしまいます。 Ver4.0を使用しています。 package my.application.imageviewer; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.ImageView; public class ImageViewer extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public void showImage(View view) { ImageView imageView1 = (ImageView)findViewById(R.id.imageView1); imageView1.setImageResource(R.drawable.sample); } } プログラムにミスがあるのでしょうか? 宜しくお願い致します。

  • Android開発の最初の段階でつまづく

    アンドロイドのアプリ制作を始めようと思い、なんとか環境を揃え、早速チュートリアルサイトを見ながら始めたのですが、早速、最初のHelloWorldでつまづいてしまいました。 以下ソースコードです。 ********************************************************************************** package helloAndroid.PackageName; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class HelloAndroidActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText("Hello,Andloid"); setContentView(tv); } } ********************************************************************************** このように書いたのですが、 The left-hand side of an assignment must be a variable というエラーが下から4行目の tv.setText("Hello,Andloid"); のところで出ます。 調べてはいるのですが、このエラーの意味がいまいちわからず困っています。 アドバイスよろしくお願いします。 私自身はVBを少し触ったことのある程度で、Javaは初めてです。

  • ANDROIDアプリからシェルコマンド

    アンドロイドアプリ、というかJAVA初心者です。 アンドロイドアプリからシェルコマンドを実行したいのですが、うまくできません。他サイトを参考に以下のように作ってみたのですがどこが悪いのでしょうか? このアプリを実行してもchmodできません。 ちなみにadb shellでは同様のコマンドでちゃんとchmod できます。 よろしくお願いします。 package com.android.test; import java.io.DataOutputStream; import java.io.IOException; import android.app.activity; import android.os.Bundle; import android.widget.TextView; public class ShelltestActivity extends Activity { /** Called when the activity is first created. */@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView tv = new TextView(this); tv.setText("Hello, World"); setContentView(tv); try { Process p = Runtime.getRuntime().exec("su"); DataOutputStream dos = new DataOutputStream(p.getOutputStream()); dos.writeBytes("chmod 777 /data/app/*\n"); dos.flush(); } catch (IOException e) { e.printStackTrace(); } } }

  • Androidアプリ・SDKでの実行時エラー

    初めてアンドロイドアプリの開発をしています(多言語のプログラミング経験はありますが、JAVAは初めてです)。Eclipseで開発を行っていますが、ボタンをクリックしたら画面遷移をする、という処理を追加したところ、Android SDKで実行した際に 「アプリ名(パッケージ名)が予期せず停止しました。やり直してください。」 と出て、トップの画面も表示されなくなってしまいました。なお、Eclipse上ではエラーなどが出ていません。原因が解らず困っています。何かわかる方がいらっしゃいましたらお教え下さい。 以下がソースになります。 ■トップのActivity--------------------- package jp.xxxxx.xxxxx; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //ボタンを定義 Button btn1 = (Button) findViewById(R.id.btn1); //クリックイベント btn1.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { Intent intent = new Intent( getApplicationContext() , SubActivity.class); startActivity(intent); } }); } } ■トップ画面のXML--------------------- <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"> <ImageView android:id="@+id/topLogo" android:src="@drawable/logo" /> <LinearLayout android:id="@+id/linearLayout1"> <TextView android:id="@+id/btn1" android:text="@string/btn1text"></TextView> </LinearLayout> </LinearLayout> ■トップのAndroidManifest.xml--------------------- <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="jp.xxxxx.xxxxx" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="7" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:label="@string/app_name" android:name="MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:label="@string/screenName2" android:name="SubActivity"> </activity> </application> </manifest> なお、Activityの「//ボタンを定義」以下をコメントアウトした際には画面は出てきます。何か初歩的な間違いをしているかもしれませんが、どうかよろしくお願いします。

    • ベストアンサー
    • Java
  • andopoid開発HelloWorld

    andopoidをインストールしてHelloWorldを表示させようとしました。 emulatorは起動できましたが、待っていてもHelloWorldが実行されません。 他のサイトで結構時間がかかると書いてあったので、一時間放置していてもHelloWorldは 実行されず、menuボタンや他のボタンも実行できません。 下記がソースになりますが、何か足りない部分とかありますでしょうか? スイマセン、詳しい方教えて下さい。 package com.android.example; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class HelloWorld extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText("Hello, World"); setContentView(tv); } }

  • androidアプリ開発 youtube表示方法

    androidアプリをjavaで開発してます。youtube動画を見れるアプリにしたいです。下記のコードでyoutubeサイトには行けるんですが、画象をクリックしても動画を見ることができません。どのようにすれば動画を見れるようになるでしょうか?どうぞよろしくお願いします。 package com.XXX; import android.app.Activity; import android.os.Bundle; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; public class WebViewActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.web); WebView webView = (WebView)findViewById(R.id.main_webview); webView.setWebViewClient(new WebViewClient()); webView.loadUrl(url); WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); } }

  • android inflateメソッドについて

    eclipseから「新規アプリケーション・プロジェクト」でプロジェクトを作成すると下記のコードが自動作成されます。 package com.example.hello; import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } } この中で、inflateメソッドにカーソルを当てると  void android.view.MenuInflater.inflate(int menuRes, Menu menu) が表示されるので、MenuInflaterクラスのメソッドだと確認できます。 しかし、import文でMenuInflaterクラスを定義していないのになぜ使用できるのでしょうか。

専門家に質問してみよう