Androidのボタン押下のイベント

このQ&Aのポイント
  • Androidのボタン押下のイベントについて
  • ボタン押下時に表示されるメッセージが表示されない問題の解決方法
  • ボタンを押してもMainActivity.javaのonClickメソッドが動作しない問題の解決方法
回答を見る
  • ベストアンサー

Androidのボタン押下のイベント

初めてボタンを付けました。 きちんと動作しましたが、ボタンと関係のないアプリの名前の変更などをしていたら ボタンを押してもMainActivity.javaの public class MainActivity extends Activity implements OnClickListener { ・・・ public void onClick(View v) { Toast.makeText(this, "ボタンが押されました", Toast.LENGTH_LONG).show(); } がいつの間にか動作しなくなりました。 ボタンを押すとボタンは勝手に青くなって標準の音も出ますが、"ボタンが押されました"が表示されなくなりました。 どこを見直したらよいですか?

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

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

  • ベストアンサー
noname#247307
noname#247307
回答No.2

ああ、setOnClickListenerで組み込んでるんですね。ならonclickプロパティは不要です。R.id.buttonはあってますね? そうなると、onClickが呼び出されているのかどうかをまず確認した方がいいでしょう。デバッグモードで実行してみてください。それと、実行時にエラーや警告など出てませんか。コンソールで確認してください。

kaepobc
質問者

補足

onClickが呼び出されているのかを確認したところ、呼ばれていることが分かりましたので ボタンにまつわるエラーではなさそうであるというところまで分かりました。

その他の回答 (1)

noname#247307
noname#247307
回答No.1

とりあえず、ボタンのonclickプロパティにonClickメソッドが設定されているか確認してみては。何かの拍子に設定が消えているとかいうことかも知れないので。

kaepobc
質問者

補足

Activity_main.xmlをグラフィカル・レイアウトで表示させ、GUIのプレビューのような表示上のボタンをクリックすると アウトラインのタブでプロパティがたくさん表示され、   View    └ On Click を見つけました。 このOn Clickの値は空欄です。 最初に"ボタンが押されました"が表示されていた時も、このOn Clckは空欄だったと思います。 ボタンの設置はGUIで、フォーム・ウィジェットからButtonを選びました。 素人なのでリスナの登録もGUIで行いたかったのですが分からなかったので MainActivity.javaに直接書きました。 ボタンなのにViewでよいのか心配なのですがソースは以下です。 package com.example.test1; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener {  @Override  protected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.activity_main);   View v = findViewById(R.id.button);   v.setOnClickListener(this);  }  public void onClick(View v) {   Toast.makeText(this, "ボタンが押されました", Toast.LENGTH_LONG).show();  } }

関連するQ&A

  • Android JAVAへでの質問です

    (←※この部分!) の意味がわからないのでどなたか教えていただけないでしょうか? private EditText edit1; ですが、なぜ private がついているのでしょうか?なくても動きましたが何か意味があるのでしょうか? そしてどうして、この子はここにいるのでしょうか? Button btn1 と一緒に仲良くいてもいいんじゃないでしょうか? ================ import android.app.Activity; import android.os.Bundle; import android.text.Editable; import android.view.*; import android.view.View.OnClickListener; import android.widget.*; public class Test2Activity extends Activity { private EditText edit1;(←※この部分!) @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); edit1 = (EditText)this.findViewById(R.id.EditText1); Button btn1 = (Button)this.findViewById(R.id.button1); btn1.setOnClickListener(new MyClickA()); } class MyClickA implements OnClickListener { public void onClick(View view){ Editable e = edit1.getText(); int n = Integer.parseInt(e.toString()); Toast toast = Toast.makeText(getApplicationContext(), "数値=" + n, Toast.LENGTH_SHORT); toast.show(); } } }

    • ベストアンサー
    • Java
  • androidアプリ、Listviewについて

    現在、Aというクラスで定義されているボタンを押した 際に、 まずはボタンが押された旨をトーストし、その後 Bというクラスで定義されているListViewを表示させた いと考えています。 この時、Aのクラスにはなんと記述したら良いのでしょ うか? Aクラスに public void onClick() { //中略 public void run() { //入力した文字をトースト出力する Toast.makeText( //中略 ) class B extends ListActivity { } } のように記載しているのですが、トーストまでしか 正常に動作しません。 どなたかご存知の方がいらっしゃいましたらよろしくお 願いします。

  • アンドロイドのJAVAの基本(文法)について

    アンドロイドの開発を目指して基本から勉強していますが、 本を買っても何のことかさっぱりで困っています。 基本中の基本で恐縮ですが、習熟している方、お助けください。 1.下記はどういう意味でしょうか? public class DBSampleA extends Activity implements View.OnClickListener{ ※implementsの意味を調べても何のことかさっぱりです・・ 2.下記の@Override とは何を意味するのでしょうか? @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); 3.また、onCreate(Bundle savedInstanceState) の中の、 Bundle savedInstanceState はどういう位置付けなのでしょうか?

    • ベストアンサー
    • Java
  • eclipseでのコード補完

    public class HelloWorldActivity extends Activity implements View.OnClickListener { 上記のコードで "implements View"と入力した直後に、コード補完(Ctrl + Space)しても android.view.Viewクラスが補完候補に現れません。 何故、補完候補に表示されないのでしょうか? また、コード補完を使って、"View.OnClickListener"を素早く入力するにはどうしたらよいのでしょうか? Eclipse Indigo(3.7.1) JDK 1.6.0_29 Android SDK 3.2 よろしくお願いします。

    • ベストアンサー
    • Java
  • Android/OnClickListener

    Android/View.OnClickListenerインターフェイス インターフェイスについて教えてください。 下記ページで、「View.OnClickListenerインターフェイス」をimplementsする必要性が理解できません。 ▽Androidアプリにおけるユーザインタフェースの基本処理(3/4):CodeZine   http://codezine.jp/article/detail/6026?p=3 最終的に、ViewクラスonClickメソッドを呼び出すのであれば、 Viewクラスを継承すれば良いと思うのですが、 どうして、「View.OnClickListenerインターフェイス」をimplementsするのでしょうか? ボタンのオブジェクトにリスナーを登録する際、 「リスナーイベントに応じて呼び出されるメソッド」は少ないほうが良い、から? それとも、ViewクラスsetOnClickListenerメソッドの引数に書いている内容に関係しているのでしょうか? ▽View | Android Developers http://developer.android.com/reference/android/view/View.html#setOnClickListener(android.view.View.OnClickListener) >public void setOnClickListener (View.OnClickListener l) この引数(View.OnClickListener l)の意味を教えてください。 View.OnClickListener型しか受け付けない? l って何ですか?

    • ベストアンサー
    • Java
  • androidアプリ開発について

    androidアプリ開発初心者です。 やりたいことは、 スタートボタンを押して、自分のお気に入りのページに飛び、(例えばオークションなど)サイトを表示させ、何分間ごとに更新できるループ処理?などができればいいなと考えています。 スタートボタンを押してサイトを表示するまでは何とか作れたのですが、それ以降をどのように作ったらいいのか分かりません。 初心者的な質問で申し訳ないのですが、どのように書いたらよいのか教えてください。 コードはこのようになっています。 <<main.xml>> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="192dp" android:layout_height="wrap_content" android:text="スタート" /> </LinearLayout> <<MainActivity.java>> import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { Button btn =null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.button1); btn.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v){ Uri uri =Uri.parse("http://"); Intent intent=new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(uri); startActivity(intent); } }); } @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; } } 長文で申し訳ありません。どうぞ宜しくお願い致します。

  • Androidで画面遷移ができません.

    初心者ながら,Android向けにアプリを開発しています. ページXXXXXでボタンを表示させ,ページYYYYYで画像が表示されるようにしたいのですが,ページXXXXXで表示されたボタンを押すとエラーが出て強制終了となってしまいます. 画面遷移されるページ(YYYYY)には,適当な位置にタッチさせるとタッチした位置に移動する画像についてプログラミングしてあります.ページYYYYYは個別で実行すると正常に起動します. どこに原因があるのか教えてください.よろしくお願いします. ページXXXXXのソースは以下のとおりです. 【ソース】 import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.content.Intent; public class XXXXX extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button b1 = (Button) findViewById(R.id.button1); b1.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { Intent intent = new Intent(XXXXX.this, YYYYY.class); startActivity(intent); } }); } }

    • ベストアンサー
    • Java
  • アンドロイド MainActivity.java

    アンドロイド(JAVA)でアプリを開発してます。 いくつかの画面が存在して、ある程度、動作するようになってるのですが、 MainActivity.javaというファイルがプロジェクト内に存在しません。 いろいろとやりたい事調べてると、MainActivity.javaというのが出てくるのですが MainActivity.javaというファイルは別になくても支障はないのでしょうか? 今、構成上Activityはいくつかあり、AndroidMainFest.xmlというファイルで Activityの設定などをしてます。 MainActivity.javaというのは、何か特別な動きをするファイルなのでしょうか? なくても問題なしでしょうか? 以上、素人質問かも知れませんが、よろしくお願いします。

  • 無名クラスからのstartActivity

    androidの勉強をしております。 無名クラス内からIntentのコンストラクタに渡す引数がthisでは不十分なのはどうしてですか? 以下がソース例です。 略 public class HelloAndroid extends Activity{ /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); 略 button1.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { Intent intent = new Intent(HelloAndroid.this, HA2.class); startActivity(intent); } }); } }

    • ベストアンサー
    • Java
  • アンドロイド JAVA 警告

    アンドロイド 初心者です package com.example.test; import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.view.View; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new testView(this)); } class testView extends View { public testView(Context context) { super(context); } @Override protected void onDraw(Canvas canvas) { Paint paint = new Paint(); paint.setColor(Color.RED); canvas.drawLine(0, 0, 100, 50, paint); } } } このプラグラムで"Paint paint = new Paint();"のところで "Avoid object allocations during draw/layout operations (preallocate and reuse instead)" の警告が出ます、これを取る方法はありませんか。

    • ベストアンサー
    • Java

専門家に質問してみよう