0

ボタンからクリックイベントを受信して​​いません。なんでだろうか。

上部にアクションバーのインクルードレイアウトがあり、下部にボタンがあるLinearLayoutがあります。のイベントを受信できません

  1. アクションバーのすぐ下にある「マイロケーションアイコン」
  2. 次へボタン
  3. ズームイン/ズームアウトボタン

ここで何が欠けていますか?

ここに画像の説明を入力してくださいここに画像の説明を入力してください

メインレイアウトlocation.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <include
        android:id="@+id/actionbar"
        android:layout_alignParentTop="true"
        layout="@layout/actionbar" />

    <Button
        android:id="@+id/next"
        <!-- removed unnecesary attr's -->        
        android:background="#f6461d"
        android:clickable="true"
        android:enabled="true"
        android:text="Next"/>

</RelativeLayout>

アクションバー

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_alignParentTop="true"
    android:background="#EEeeeee4"
    <!-- removed unnecesary attr's --> >

    <LinearLayout
        <!-- removed unnecesary attr's --> 
        android:orientation="horizontal" >

        <Button
            android:id="@+id/icruiseon"
            <!-- removed unnecesary attr's --> 
            android:background="@drawable/curbcablogo" />

        <Button
            android:id="@+id/refresh"
            <!-- removed unnecesary attr's --> 
            android:background="@drawable/refresh" />

        <ImageView
            android:id="@+id/connectStatus"
            <!-- removed unnecesary attr's --> 
            android:src="@drawable/disconnect" />

        <ImageView
            android:id="@+id/busy"
            <!-- removed unnecesary attr's --> 
            android:clickable="false"
            android:src="@drawable/busy" />

        <TextView
            android:id="@+id/subscriberInbox"
            <!-- removed unnecesary attr's --> 
            android:background="@drawable/incomingprovider" />
    </LinearLayout>

    <LinearLayout
            <!-- removed unnecesary attr's -->  >

        <TextView
            android:id="@+id/currentAddress"
            <!-- removed unnecesary attr's --> 
            android:text="Receiving address....." />

        <ImageView
            android:id="@+id/whereAmI"
            <!-- removed unnecesary attr's --> 
            android:src="@drawable/mylocation" />
    </LinearLayout>

</LinearLayout>

私の活動ファイル

public class MyActivity {
onCreate() {
    setContentView(R.layout.location) ;

        next = (Button) this.findViewById(R.id.next);
        next.setOnClickListener(this);

        whereAmI = (ImageView) this.findViewById(R.id.whereAmI);
        whereAmI.setOnClickListener(this) ;

@Override
    public void onClick(View v) {
        if (v == next) {
            Toast.makeText(this, "searching", Toast.LENGTH_LONG).show() ;
            new Search(this, source, destination).execute(null);
        } else if (v == whereAmI) {
            Toast.makeText(this, "centering", Toast.LENGTH_LONG).show() ;
            location.getController().setCenter(source);
            new GetGeoAddress(this, source).execute(null);
        }
    }

AnotherActivity

public class HomeActivity extends MyActivity {
onCreate() {
      //No setContentView here ; I expect that the super class MyActivity will setContentView.

編集:レイアウトとコードからMapViewを削除して、削除してデバッグしました。私はまだクリックイベントを取得しません。ここで何が欠けていますか?

編集2:上記にいくつかの変更を追加しました。これは、アクティビティの継承と関係があると思われます。私はここで基本的な何かが欠けていることを知っています。それは何ですか ?

4

1 に答える 1

1

問題を修正しました。アクティビティ間の継承は、onClickListnerを混乱させます。

スーパークラス

public class SuperClass extends Activity implements OnClickListner {
     public onCreate() {
         setContentView(R.layout.layoutwithView_ABC) ;
         ABC.setOnClickListener(this) ;
     ...
     public void onClick() {
         Toast ("this wont show up") ;
     }
     ...
}

マニフェストファイルの最初のアクティビティとしてのサブクラス

public class SubClass extends SuperClass implements OnClickListner {
     public onCreate() {
         //NOT init here, setContentView(R.layout.layoutwithView_ABC) ;
     ...
     public void onClick() {
         Toast ("will show up") ;
     }
     ...
}

私が答えを正しく表現したことを願っています。スーパークラスでABCのsetOnClickListererを使用している場合でも、サブクラスのonClickは、その「オーバーライド」であるSimpleAnswerから呼び出されます。

于 2013-02-07T04:33:00.707 に答える