• ベストアンサー

Androidの関数が呼び出されるタイミング

現在Androidを勉強中なのですが、関数が呼び出されるタイミングの質問です。 onCreate()はアクティビティ作成時に呼ばれるようですが、 画像のようなプログラムでアクティビティが表示された後、 ボタンを押すとonClick()が呼ばれる仕組みがわかりません。 ボタンを押した後onCreate()自体は呼ばれていないのに、 内部のonClick()がなぜ呼ばれるのでしょうか? このあたりの仕組を説明していただけると助かります。 よろしくお願いいたします。

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

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

ます、setOnClickListener()メソッドの意味は理解しているのか? それと >Androidの関数が呼び出されるタイミング >現在Androidを勉強中なのですが、関数が呼び出されるタイミングの質問です。 オブジェクト指向のJavaにおいて関数はない。あるのはメソッド。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

単に、ボタンを押した時はonClick()を呼び出すように、setOnClickListener()がセットアップしてくれてるだけかと。 http://www.google.co.jp/search?hl=ja&lr=lang_ja&q=Java+%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%83%AA%E3%82%B9%E3%83%8A%E3%83%BC

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • SQLiteOpenHelperの実行タイミングは

    android(Java) ・「SQLiteOpenHelperクラス」を継承したユーザー定義クラスの、「コンストラクタ」や「onCreateメソッド」はどのタイミングで(どういう経路で)呼び出されるのでしょうか? >データベースの作成がまだ行われていなければ作成を行い、作成されていればそれを開きます ・どうやってそれを知るのでしょうか? ・アクテイビティにアクセスした時点で読み込まれるのかと思ったのですが、アクティビティクラスでは、importしていないみたいだし… ・アクテイビティは関係ない? ・「SQLiteOpenHelperクラス」を継承した定義クラスが、どのタイミングで、どこから呼び出されるか、教えてください ※コンストラクタに引数として渡っているContextが、何か関係しているのでしょうか?

    • ベストアンサー
    • Java
  • Android super.onCreate(sa

    Androidで、アクティビティオブジェクトを生成している箇所(new Activity?)を見たいのですが、 どこで生成しているのでしょうか? ネットを見たら、 super.onCreate(savedInstanceState);で、画面オブジェクトを作成、て書いてあったのですが、 ここで言う.onCreateは、 ▽Activity | Android Developers   http://developer.android.com/intl/ja/reference/android/app/Activity.html#onCreate(android.os.Bundle) のことでしょうか? 見方が分からないのですが、このメソッドで、画面オブジェクトを生成しているのでしょうか? それとも、コンストラクタか何かで、画面オブジェクトを生成しているのでしょうか? それは、どこに書いてあるのでしょうか?

    • ベストアンサー
    • Java
  • Androidのマルチスレッド処理の開始タイミング

    組み込みボード上にAndroidOSをのせ、 その上でRS232C通信制御するプログラムを作成しております。 RS232C通信制御についてはThreadクラスを派生させたクラスを 作成し、マルチスレッド処理として、アプリ起動中に、常に動作させたい と考えています。 このとき、RS232C通信制御するスレッドを 開始するタイミング、終了するタイミングはメインアクティビティのどの タイミングで行うのが1番よいのでしょうか? 現状は以下で考えています。 public class MainActivity extends Activity { ComCtrl m_ComCtrl ; // RS232C通信制御スレッド protected void onCreate(Bundle savedInstanceState) { m_ComCtrl = new ComCtrl( null ) ; // スレッド生成 m_ComCtrl.start() ; // スレッド開始 } protected void onDestroy() { m_ComCtrl.halt() ; // スレッド終了(スレッドメインループを終了させる独自メソッド) } }

    • ベストアンサー
    • Java
  • 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
  • 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開発 Eclipse(超初心者)

    Eclipseの使い方がわかりません。 eclipseをインストールしてプロジェクトを作成しAVDの仮想デバイスを適当に作成し AVD仮想デバイス ターゲット:Android4.0-APILevel14 SDカード:サイズ 66MiB スキン:ビルトイン WVGA800 package com.example.android.hello.test; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; public class Hello15 extends Activity{ //表示用のテキストとボタンを宣言 --- private TextView txtCaption; private Button btnHello; public void OnCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); //レイアウトを作成 LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); setContentView(layout); //テキストを追加 txtCaption = new TextView(this); txtCaption.setText("Click Button!"); layout.addView(txtCaption); //ボタンを追加 btnHello = new Button(this); btnHello.setText("Button"); layout.addView(btnHello); //イベントを設定 btnHello.setOnClickListener(new OnClickListener(){ public void onClick(View v){ txtCaption.setText("Hello, Android!"); } }); } } サンプルで上記のようなソースを作成して 実行したのですが 以前は Android Application Java Applet Java Application など選択肢が出てたのですが仮想デバイスを設定した 辺りからでなくなり実行して少し経つと ←画面に『android』という文字が →画面にキーボードのようなものがでてきて 3分ぐらいまつと←画面が携帯画面に変化します 上記のプログラムではボタンの生成とメッセージがでてくるはずが それらしきものがありません。これらはどこに出てくるのでしょうか? 動かし方すらよくわかってないのでお解説おねがいいたしもうす;

  • androidでアプリを作ろうとしてるのですが

    package com.example.test; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; public class InOutTest extends Activity { /** Called when the activity is first created. */ public TextView txtInfo; public EditText edtText; public Button outputbutton; public TextView txtResult; public TextView txtjudge; public String strInch; public String gettext; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //レイアウト作成 ここから LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); setContentView(layout); //レイアウトを見えるようにする //レイアウト作成 ここまで //GUI部品作成 ここから // ラベル txtInfo = new TextView(this); txtInfo.setText("check"); strInch = ("check"); layout.addView(txtInfo); // エディタ edtText = new EditText(this); layout.addView(edtText); // ボタン txtResult = new Button(this); txtResult.setText("same or difference"); layout.addView(txtResult); // 結果表示用ラベル txtjudge = new TextView(this); txtjudge.setText("check"); layout.addView(txtjudge); //GUI部品作成 ここまで txtResult.setOnClickListener(new OnClickListener(){ public void onClick(View v) { gettext = edtText.toString(); if (strInch==gettext){ txtjudge.setText("ok"); } }; }); }} 上のプログラムで strInchに入ってるデータとgettextで取得した文章を比較して同じなら txtjudgeにOKと引き渡して表示させたいのですがうまく動きません 何方かどうぞよろしくお願い致します

    • ベストアンサー
    • Java
  • プログレスダイヤログのタイミングについて

    プログレスダイヤログのタイミングについて 現在、Androidアプリ開発にてプログレスダイヤログの表示を行っております。 意図したタイミングでプログレスダイヤログが表示されないので、どなたかご教授いただけませんでしょうか? ■理想の流れ ボタンを押す ↓ プログレスダイヤログの表示 ↓ スリープ処理 ↓ プログレスダイヤログを閉じる ■現在の流れ ボタンを押す ↓ スリープ処理 ↓ ダイヤログ表示 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.xxx); //プログレスダイヤログを生成 final ProgressDialog pd; pd = new ProgressDialog(this); pd.setMessage("情報を読込んでいます。しばらくお待ち下さい。"); pd.setTitle("Loading……"); pd.setIndeterminate(false); pd.setProgressStyle(ProgressDialog.STYLE_SPINNER); //検索ボタンの呼び出し Button btn = (Button)findViewById(R.id.Button21); //検索ボタン押下の処理 btn.setOnClickListener(new OnClickListener(){ public void onClick(View v) { //プログレスダイヤログを生成 pd.show(); try { Thread.sleep(10000);//10秒スリープする } catch (InterruptedException e1) { e1.printStackTrace(); } . . . .

    • ベストアンサー
    • Java
  • Androidアプリのスライドショーを作りたいです

    Androidアプリのプログラムンぐの勉強中の者です。 スライドショーを作りたいのですが、どのようにプログラムを組めば 良いのでしょうか。 考えている動作としては、まずSDカードに保存されている画像の中から 1枚目の画像を表示させ、後は画面に触れると、 次の画像に移動する・・といった感じにしたいです。 自分なりに調べてみたのですが、onClickというコマンド?を使えばよいのかと 思うのですが、どのように記述すれば良いのでしょうか。 解説サイトを探してみたのですが、なかなか初心者向けのものが 見つからず、悩んでおります。 どなたかお知恵をお貸しください。

  • Android アクティビティ間の受け渡しについて

    現在、あるアクティビティで作成したSocketクラスを継承したオブジェクトを 別のアクティビティに受け渡そうとしています。 このとき受け取った先のアクティビティで ソケットの接続状態が変わってしまい、困っています。 原因がわかるかたおりましたら教えてください。よろしくお願いします。 ---- 手順 1.Serializableを実装したSocket継承クラス(Socket2)を作成  (Socketオブジェクトをアクティビティに渡すために必要)   class Socket2 extends Socket implements Serializable 2.アクティビティAでホストXXXとの接続を確立 Socket2 socket = new Socket2(); Socket2.connect(XXX); ★ここでsocketの属性IsConnectedを見るとTrueになっています 3.インテント作成 Intent intent = new Intent(context, ActivityB.class); 4.パラメータ設定 intent.putExtra("SOCKET", socket); 5.アクティビティBを起動 StartActivity(intent); ; 6.アクティビティBのOnCreate()でパラメータを取得 Bundle extras = getIntent().getExtras(); if(extras != null){    socket = (Socket2)extras.getSerializable("SOCKET"); } ★ここでsocketの属性IsConnectedを見るとFalseになっています 変数socket自体はnullではないので何か値は渡ってきてはいるのですが 接続が切れているため、たとえば socket.getInputStream()等をすると例外(IOException)が飛んできます。 またSocket2クラスに文字列の属性を追加した場合には、 その値は正しく渡せているようです。 Serializableを実装すればオブジェクトもアクティビティに渡せるということなので その通りにやったつもりなのですが・・・。 なぜこうなってしまうのか原因がわかりません。 よろしくお願いします。

    • ベストアンサー
    • Java