0

質問 1: 私には 2 つの活動があります。最適化する方法を考えていました。複数のリスナーを持つ 2 つのアクティビティを作成することもできます。または、ボタンごとに複数のJavaファイルを作成します(onclickリスナー)

質問 2: 1 つの Java で複数のリスナーを作成しようとしましたが、1 つのボタンしか機能しません。1 つの Java ファイル内の複数のリスナーの構文は何ですか? これが私の*更新されたコードです。今、問題は、どのボタンをクリックしても同じページにつながることです。

package install.fineline;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;

public class Activity1 extends Activity2 {

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

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fineline);
        addListenerOnButton();
    }


    public void addListenerOnButton() {

        final Context context = this;
        Button1 = (Button) findViewById(R.id.autobody);
        Button1.setOnClickListener(new OnClickListener() {

            public void onClick(View arg0) {

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

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

        Button2.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

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

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

        Button3.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

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

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

        Button4.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

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

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

        Button5.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

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

        Button6 = (Button) findViewById(R.id.towing);

        Button6.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

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

activity2.java

package 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 onCreate(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

1 に答える 1

0

投稿したコードから、各リスナーに同じコードがあるため、すべてのボタンが同じページにつながります。

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

Activity1.class開始したいアクティビティのクラス オブジェクトはどこにありますか。Activity2そのボタンから開始したい場合はActivity2.class、Intent の 2 番目のパラメーターとして配置する必要があります。

Activity2 の例では、 onCreate() のみが呼び出されることに注意してください。これは、そのメソッドが Activity 基本クラスの onCreate() メソッドをオーバーライドするためです。onCreate1、onCreate2 などは、基本クラスで何もオーバーライドしないため、明示的に呼び出さない限り呼び出されません。

元の質問によると、Activity1 で行っているように OnClickListeners をインラインで作成しても問題ありません。または、整理を改善するためにクラス変数として作成し、インライン コードの量を最小限に抑えることもできます。例えば:

OnClickListener button1Listener = 新しい OnClickListener() {

    @オーバーライド
    public void onClick(View arg0) {

        インテント インテント = 新しいインテント (コンテキスト、Activity1.class);
        startActivity(意図);   

    }

});

次に、クリックリスナーを次のように設定できます。

Button1.setOnClickListener(button1Listener);

OnClickListener のオーバーキルごとに新しい .java ファイルを作成することを検討します。

于 2012-10-23T18:24:29.787 に答える