0
main.xml
--------
|button1| (button press)>page1.xml
|button2| (button press)>page2.xml
|button3| (button press)>page3.xml
|button4| (button press)>page4.xml
|button5| (button press)>page5.xml
|button6| (button press)>page6.xml
-------------------------------------------

ボタンをクリックすると、対応するページに移動します。これを実装するための最良/最も簡単な方法は何ですか? onclickリスナーを試してみると、すべてが無駄になりました。1 つのリスナーを動作させることはできますが、複数のリスナーを取得しようとすると、めちゃくちゃになり、理解できません。私の現在の方法は、これらの 2 つの Java ファイル
activity1.javaを使用しています。

package install.fineline;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;

import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;

public class Activity1 extends Activity {

Button Button1;
Button Button2;
Button Button3;
Button Button4;
Button Button5;
Button Button6;



public void addListenerOnButton() {

final Context context = this;

Button1 = (Button) findViewById(R.id.autobody);

Button1.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {

        Intent intent = new Intent(context, Activity2.class);
        startActivity(intent);   

    }

});

Button2 = (Button) findViewById(R.id.glass);

Button2.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {

        Intent intent = new Intent(context, Activity2.class);
        startActivity(intent);   

    }

});

Button3 = (Button) findViewById(R.id.wheels);

Button3.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {

        Intent intent = new Intent(context, Activity2.class);
        startActivity(intent);   

    }

});

Button4 = (Button) findViewById(R.id.speedy);

Button4.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {

        Intent intent = new Intent(context, Activity2.class);
        startActivity(intent);   

    }

});

Button5 = (Button) findViewById(R.id.sevan);

Button5.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {

        Intent intent = new Intent(context, Activity2.class);
        startActivity(intent);   

    }

});

Button6 = (ボタン) findViewById(R.id.towing);

Button6.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {

    Intent intent = new Intent(context, Activity2.class);
    startActivity(intent);   

}

});

}}

ここに私の他のJavaファイルがあります

activity2.java
パッケージの install.fineline;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;

public class Activity2 extends Activity {

Button button1;

public void onCreate1(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.autobody);
}
Button button2;

public void onCreate2(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.glass);
}
Button button3;

public void onCreate3(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.wheels);
}
Button button4;

public void onCreate4(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.speedy);
}
Button button5;

public void onCreate5(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sevan);
}

Button button6;

public void onCreate6(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.towing);
}}
4

6 に答える 6

1

ページごとに 1 つのアクティビティを定義する必要があります。メインを含めて全部で7つのアクティビティ。メイン アクティビティで、単一の onClickListener を定義して、すべてのクリックを処理します。

class ClickListener implements View.OnClickListener {
    void onClick(View v) {
       switch(v.getId()) {
        case R.id.btn_1:
             ...
             break;
        ...
       }
    }

このリスナーを 6 つのボタンすべてに設定します。

于 2012-11-20T17:30:11.630 に答える
0

この機能にはボタンを使用しないでください。ListViewを使用すると、そのonItemClickListenerを使用して、クリックされた行の番号を取得できます。次に、 ViewPagerを使用して、クリックに基づいてページを表示できます。

于 2012-11-20T17:34:56.850 に答える
0

まず第一に、これはあなたの問題ではありませんが、コードを読みやすくし、メモリを保持します。単一のonClickListenerを作成し、そこでどのボタンがクリックされたかを確認します。

class Activity1 extends Activity implements onClickListener {

    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.button1:
            // handle button1 press
        case R.id.button2:
            // ...
        }
    }
}

さて、本当の問題です。2番目のアクティビティでは、AndroidはonCreate1()、onCreate2()などの関数を認識していません。代わりに、onCreate()(Androidは認識しています)を実装し、次のようにインテントで押されたボタンを送信する必要があります。

// You can just take your activity object as the context, 
// no need to convert explicitly.
Intent i = new Intent(this, Activity2.class);
i.putExtra("button", 1);
startActivity(i);

次に、アクティビティのデータを取得します。

public void onCreate() {
    int button = getIntent.getIntent().getInt("button");
}
于 2012-11-20T17:35:35.893 に答える
0

あなたは間違いなくこれをすべて間違っています。すべてのボタンが同じアクティビティを呼び出しています。彼らに別の場所に行ってもらいたい場合は、別のアクティビティを作成します。異なるデータを使用して同じ場所に移動させたい場合は、インテントを使用して情報を追加で送信します。

また、読みやすくするために、XMLで定義されたクリック時のメソッドについて学習することをお勧めします。

于 2012-11-20T17:28:13.970 に答える
0
  1. 単一の switch-case で OnClick メソッドを変更する
  2. 次のように activity1 からデータを渡します。

    インテント.putExtra("ボタンクリック", ボタン番号); startActivity(意図);

  3. 次のように activity2 でデータを受け取ります。

    clickedButton = getIntent().getExtras().getString("buttonClick");

  4. activity2 でメソッド名を OnCreate に変更します。

于 2012-11-20T17:36:45.863 に答える
0

まず、OnClickListener を実装します。実装されていないメソッドを追加する必要があります。onClick()

public class Activity1 extends Activity implements OnClickListener {

次に、ボタンを初期化し、クリック リスナーをonCreate()

Button1 = (Button) findViewById(R.id.autobody);
Button1.setOnClickListener(this);

次にonClick()、スイッチ/ケースをセットアップします

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.autobody:
        // do code
        break;
    case R.id.glass:
        // do code
        break;
    }
}

私はあなたのボタンのいくつかをやっただけですが、残りを理解することができます. 必ず onClickListeners を初期化して追加してください。onCreate()

于 2012-11-20T17:32:27.227 に答える