web-dev-qa-db-ja.com

Android button onClickListener

Activityメソッドのボタンをクリックして、新しいOnClickListenerを開こうとしています。 OnClickListenerメソッドはどのように機能し、新しいActivityを開始するために何を行う必要がありますか?

16
AndroidFreak

このタスクは、Intentsという名前のAndroidのメインビルディングブロックの1つと、Activityクラスに属するpublic void startActivity (Intent intent)メソッドの1つを使用して実行できます。

インテントは、実行される操作の抽象的な記述です。 startActivityと共に使用してActivityを起動し、broadcastIntentを使用して関連するBroadcastReceiverコンポーネントに送信し、startService(Intent)またはbindService(Intent、ServiceConnection、int)を使用してバックグラウンドサービスと通信できます。

Intentは、異なるアプリケーションのコード間で実行時バインディングを実行する機能を提供します。その最も重要な用途は、アクティビティの起動であり、アクティビティ間の接着剤と考えることができます。基本的に、実行されるアクションの抽象的な記述を保持する受動的なデータ構造です。

公式ドキュメントを参照してください- http://developer.Android.com/reference/Android/content/Intent.html

public void startActivity (Intent intent)-新しいアクティビティを起動するために使用されます。

したがって、2つのActivityクラスがあるとします-

  1. PresentActivity-これは、2番目のアクティビティに移動する現在のアクティビティです。

  2. NextActivity-これは、次に移動するアクティビティです。

そのため、意図は次のようになります

Intent(PresentActivity.this, NextActivity.class)

最後に、これは完全なコードになります

public class PresentActivity extends Activity {
  protected void onCreate(Bundle icicle) {
    super.onCreate(icicle);

    setContentView(R.layout.content_layout_id);

    final Button button = (Button) findViewById(R.id.button_id);
    button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
              // Perform action on click   
              Intent activityChangeIntent = new Intent(PresentActivity.this, NextActivity.class);

              // currentContext.startActivity(activityChangeIntent);

              PresentActivity.this.startActivity(activityChangeIntent);
            }
          });
  }
}
37
Nikhil Agrawal
//create a variable that contain your button
Button button = (Button) findViewById(R.id.button);

    button.setOnClickListener(new OnClickListener(){
        @Override
        //On click function
        public void onClick(View view) {
            //Create the intent to start another activity
            Intent intent = new Intent(view.getContext(), AnotherActivity.class);
            startActivity(intent);
        }
    });
13

OnClicklistenerを使用するか、新しいレイアウトを開くボタンのxmlコードでAndroid:onClick="myMethod"を使用できます。そのボタンがクリックされると、myMethod関数が自動的に呼び出されます。クラスのmyMethod関数は次のようになります。

public void myMethod(View v) {
Intent intent=new Intent(context,SecondActivty.class);
startActivity(intent);
}

そしてその中でSecondActivity.class contentviewに新しいレイアウトを設定します。

4
Rahul

簡単:

起動アクティビティ(onclickハンドラー)

 Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
 myIntent.putExtra("key", value); //Optional parameters
 CurrentActivity.this.startActivity(myIntent);

新しいアクティビティについて:

@Override
protected void onCreate(Bundle savedInstanceState) {
Intent intent = getIntent();
String value = intent.getStringExtra("key"); //if it's a string you stored.

androidManifest.xmlに新しいアクティビティを追加します。

<activity Android:label="@string/app_name" Android:name="NextActivity"/>
2
Dory Zidon