【问题标题】:How can I reuse the Activity code?如何重用活动代码?
【发布时间】:2012-08-31 13:16:11
【问题描述】:

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

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

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

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

如何在 SecondActivity.java

中重用按钮处理程序

【问题讨论】:

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


    【解决方案1】:

    您可以为此使用片段

    【讨论】:

      【解决方案2】:

      没有按钮处理程序。它是OnClickListener。要重用它,要么将该源复制到第二个活动类,要么创建 MyActivity 类,您的 MainActivitySecondAcivity 将扩展该类并将公共代码放在那里。

      【讨论】:

        【解决方案3】:

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

        你有你的 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));
            } ...
        

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

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

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

        【讨论】: