0

私のアプリケーションでは、すべてのアクティビティで同じ機能を実行するボタンを一意の位置に追加したいので、すべてのアクティビティに同じコードを追加する代わりに、ベース アクティビティを作成することを考えました。

mport android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.Toast;
 public abstract class DefaultActivity extends Activity{

ImageButton b;
@Override
public void onCreate(Bundle bundle)
{
    super.onCreate(bundle);
    setContentView(R.layout.default_activity);
    b = (ImageButton)findViewById(R.id.imageButton1);
    b.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Toast.makeText(getApplicationContext(), "ana fel base activity", Toast.LENGTH_LONG).show();
        }
    });
}

}

しかし、他のアクティビティにDefaultActivityを拡張させたにもかかわらず、ボタンは他のアクティビティに表示されません。これを実現する方法はありますか?どうもありがとう。

PS: actionBar は使いたくありません。

4

1 に答える 1

0

他のアクティビティが他のレイアウトで呼び出す場合、setContentView(...)それらのレイアウトが表示されます。これらのレイアウトに が含まれていない場合ImageButtonImageButton画面上には表示されません (レイアウトは、とそのスーパークラスの実装のsetContentView()両方を呼び出すことによって「ネスト」されません)。Activity1 つの解決策は、他のレイアウトでタグを使用し<include>、次のように ImageButton だけを含む別のレイアウト ファイルを作成することです。

res/layout/image_button.xml

<ImageButton xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    ...
/>

解像度/レイアウト/アクティビティ_メイン

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <!-- more views ... -->

    <include android:layout="@layout/image_button" />
</LinearLayout>
于 2013-04-28T00:41:22.937 に答える