0

すべてのアクティビティでカスタム ビューを表示する必要があり、それを 1 つの共通クラスで行いたいと考えています。

これらの 3 つのアクティビティがあるとします。

Activity_1

Activity_2

Activity_3

および共通のアクティビティMainActivity

xml3 つのアクティビティすべてに共通することを示したいと思います。

また、クリック リスナーを 1 つの共通の場所に設定して、必要な場合にのみその場所を変更する必要があるようにする必要もあります。

私はそれがかなりoops関連する質問であることを知っています。

これは私がやったことです:

アクティビティ 1:

public class ActivityOne extends CommonActivity{


Button button1;

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

    button1=(Button)findViewById(R.id.button1);

    button1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            Intent i=new Intent(ActivityOne.this,OtherActivity.class);
            startActivity(i);

        }
    });
}

}

アクティビティワン XML:

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

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Activity1" />

    <include
    android:id="@+id/header_layout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    layout="@layout/common" />

主な活動:

public class MainActivity extends Activity {

Button button1;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    button1=(Button)findViewById(R.id.button1);


    button1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            Intent i=new Intent(MainActivity.this,ActivityOne.class);
            startActivity(i);

        }
    });

}

}

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" >

    <Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/textView1"
    android:layout_alignRight="@+id/textView1"
    android:text="Button1" />

 </RelativeLayout>

共通アクティビティ

public class CommonActivity extends Activity{
private Button button1;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.common);


    button1=(Button)findViewById(R.id.button1);

    button1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Toast.makeText(CommonActivity.this, "Common Clicked", Toast.LENGTH_SHORT).show();

        }
    });

}

 }

CommonActivity Xml:

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

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Common"/>

</LinearLayout>

Activityone の共通ボタンをクリックすると、トーストが表示されなくなりました。もっとしなければならないこと、または間違ったことをしたこと。

4

2 に答える 2

-1

ジャワヘリテージ!!

oncreate メソッドでレイアウトを設定した MainActivity を childs に拡張させます。

または、ポケットベルを使用してからスワイプします。

于 2013-04-26T08:44:12.100 に答える