0

问题 1:我有两个活动。我想知道如何优化它。我可以创建两个具有多个侦听器的活动。或者为每个按钮创建多个 Java 文件(onclick 监听器)

问题 2:我尝试在一个 Java 中创建多个侦听器,但只能让一个按钮工作。一个 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);
            }
        });
    }
}

活动2.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 的第二个参数。

在您的 Activity2 示例中,请注意只有 onCreate() 会被调用,因为该方法会覆盖 Activity 基类中的 onCreate() 方法。除非您明确调用它们,否则永远不会调用 onCreate1、onCreate2 等,因为它们不会覆盖基类中的任何内容。

根据您最初的问题,可以像在 Activity1 中那样创建 OnClickListeners 内联,或者您可以将它们创建为类变量以便更好地组织,并将内联代码的数量保持在最低限度。例如:

OnClickListener button1Listener = new OnClickListener() {

    @覆盖
    公共无效 onClick(查看 arg0){

        Intent 意图 = new Intent(context, Activity1.class);
        开始活动(意图);   

    }

});

然后您可以将点击侦听器设置为:

Button1.setOnClickListener(button1Listener);

我会考虑为每个 OnClickListener 创建一个新的 .java 文件。

于 2012-10-23T18:24:29.787 回答