4

アプリには、メニュー アクティビティとメイン アクティビティの 2 つのアクティビティがあります。

ここにMenuActivity xmlがあります

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MenuActivity" >

    <LinearLayout 
       android:orientation="horizontal"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:padding="10dp"
       android:gravity="center"
       android:background="#000">

        <TextView
            android:text="menu 1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/menu1"
            android:textColor="#fff"
            android:padding="5dp"
         />

         <TextView
            android:text="menu 2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/menu2"
            android:textColor="#fff"
            android:padding="5dp"
         />

    </LinearLayout>

</RelativeLayout>

これは MainActivity.xml です

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     tools:context=".MainActivity" >

        <include 
            layout="@layout/activity_menu"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
        />

</RelativeLayout>

これで、menu1 と menu2 の OnClick リスナーが で定義されましたMenuActivity.java

public class MenuActivity extends Activity {

      TextView menu1, menu2;

      @Override
      protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_menu);

           menu1 = (TextView)findViewById(R.id.menu1);
           menu2 = (TextView)findViewById(R.id.menu2);

           menu1.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View arg0) {
                     // TODO Auto-generated method stub
                     Toast.makeText(getApplicationContext(), "menu 1 clicked", 5000).show();
                }
           });

           menu2.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View arg0) {
                      // TODO Auto-generated method stub
                      Toast.makeText(getApplicationContext(), "menu 2 clicked", 5000).show();
                }
           });

}

で OnClick リスナーを継承するにはどうすればよいですかMainActivity。要するに、私のコードはMenuActivity他のさまざまなアクティビティで使用する必要があります。どのように使用すればよいですか? コードでサポートしてください。十分な検索を行いましたが、関連するものは見つかりませんでした。私はAndroidが初めてです。どんな助けもいただければ幸いです。

4

3 に答える 3

5

これらのメニュー ボタンを使用するすべてのアクティビティで使用する基本クラスを作成します。

public class BaseActivity extends Activity implements OnClickListener {

    @Override
    protected void onClick(View view) {
        switch(view.getId()) {
        case R.id.menu1:
            Toast.makeText(this, "Menu1 clicked.", Toast.LENGTH_SHORT).show();
        break;

        case R.id.menu2:
            Toast.makeText(this, "Menu2 clicked.", Toast.LENGTH_SHORT).show();
        break;
        }
    }
}

そして、あなたの活動でこれを行います:

public class MainActivity extends BaseActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViewById(R.id.menu1).setOnClickListener(this);
        findViewById(R.id.menu2).setOnClickListener(this);
    }
}

他のアクティビティでも同じことができます:

public class SecondActivity extends BaseActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        findViewById(R.id.menu1).setOnClickListener(this);
        findViewById(R.id.menu2).setOnClickListener(this);
    }
}

null ポインターを取得しないように、そのメニュー レイアウトをアクティビティ レイアウトに含めることを忘れないでください。

于 2013-10-21T12:22:01.263 に答える