如何重用Activity代码?

时间:2012-08-31 13:16:12

标签: android android-layout android-activity code-reuse

我们可以使用<include />将布局包含在另一个布局中。

我使用<include /> activity_main.xml 包含在 activity_second.xml 中。

activity_main.xml 有一个<TextView />和一个<Button /><Button /> MainActivity.java

中有一个处理程序doThis(View v){..}

如何在 SecondActivity.java

中重用Button Handler

3 个答案:

答案 0 :(得分:3)

您可以使用片段

答案 1 :(得分:2)

没有按钮处理程序的事情。它是OnClickListener。要重新使用它,请将该源复制到第二个活动类,或者创建MyActivityMainActivity将扩展的SecondAcivity类,并将公共代码放在那里。

答案 2 :(得分:1)

我为你的问题做了类似的事情。不要认为它比使用碎片更好,但简而言之。

你有layout_main.xml。您可以将其他XML(menu.xml)导入到以下内容中:

<include
    android:id="@+id/layoutMenu"
    layout="@layout/menu" />

像这样创建一个Menu.java类(我从我自己的类中复制了这个,所以它不完整但是为了它的想法):

 public class Menu {

ImageView buttonNieuws;

public void set(Activity activity, String currentPage) {

    // Button NIEUWS
    buttonNieuws = (ImageView) activity.findViewById(R.id.button_nieuws);

    if (!currentPage.equals("nieuws")) {

        buttonNieuws.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(view.getContext(),
                        Nieuws.class);
                view.getContext().startActivity(intent);
            }
        });

    } else {

        buttonNieuws.setImageDrawable(activity.getResources().getDrawable(
                R.drawable.button_nieuws_on));
    } ...

然后在您的主Activity类中,您可以使用这样的代码将它们全部链接在一起:

 Menu menu = new Menu();
 menu.set(this, currentPage);

巨大的缺点是无限活动堆叠在一起。这是我的临时解决方案,因为我还没有进入碎片。