0

質問 1: 2 つのアクティビティがあります。最適化する方法を考えていました。複数のリスナーを使用して 2 つのアクティビティを作成できます。または、ボタンごとに複数の Java ファイルを作成します (onclick リスナー) 質問 2: 1 つの Java で複数のリスナーを作成しようとしましたが、1 つのボタンしか機能しません。1 つの Java ファイル内の複数のリスナーの構文は何ですか? これが私の*更新されたコードです。今、問題は、どのボタンをクリックしても同じページにつながることです。問題はこれらの括弧内のテキストに示されていると思います [-{}-] activity1.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 Activity {

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, 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);   

}

});

}}

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

あなたは間違いなくあなたの答えで正しい道を進んでいました。しかしonCreate1、、、onCreate2etcetera が呼び出されることはありません。代わりに、これを試してください:

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 Activity {

Button button1;
Button button2;

@Override
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() {

        @Override
        public void onClick(View arg0) {

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

        }

    });

    button2 = (Button) findViewById(R.id.glass);
    button2.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {
        Intent intent = new Intent(context, GlassActivity.class);
        startActivity(intent);   
    }
});
}

そして、Activity表示したいレイアウトごとに個別に作成します(上記のコードでは、の代わりにAutoBodyActivityandを参照していることに注意してください):GlassActivityActivity2

package install.fineline;

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

public class AutoBodyActivity extends Activity {

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

と:

package install.fineline;

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

public class GlassActivity extends Activity {

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

を作成すると、個別のボタンに個別のリスナーが追加されますActivity。が作成されるとメソッドが自動的に呼び出されますが、メソッドonCreate()は呼び出されませんでした。ActivityonCreate1()

構文の詳細を理解するには、基本的な Java チュートリアルをいくつか見てから、 Android チュートリアルに進んでください。Activity2これにより、コードが機能すると思っていたように機能しなかった理由を理解し、個別のアクティビティを処理する方法をよりよく理解できます。悪意はありません:)私たちは皆学んでいます。

私の答えがお役に立てば幸いです。

于 2012-10-23T12:53:22.713 に答える