【问题标题】:using common Layout and its event in all activities在所有活动中使用通用布局及其事件
【发布时间】:2012-01-18 06:58:14
【问题描述】:

我有一个通用布局,顶部栏有四个按钮,我在所有活动中使用此布局,方法是在所有活动布局中包含该通用布局 由

<include ... >

但我必须在所有活动中使用这 4 个按钮单击事件 是否有任何常用方法来创建用于所有活动的自定义活动,我已经在活动中创建并在该活动中实现了 4 个按钮单击事件,并在所有活动中扩展了该活动,但它不适用于我。 请给我一些想法。 谢谢

【问题讨论】:

  • 您好,您在应用程序中使用 Tab Activity 吗?
  • 你是 mansi vora,我没有使用 tab Activity
  • 它应该可以工作。你能发布你的代码吗
  • 是的,我是。请检查答案。我已经发布了语法。希望对你有帮助。
  • 我从这里得到了我的解决方案stackoverflow.com/questions/7419715/…,谢谢大家的回复

标签: android


【解决方案1】:

是的,你可以让一个活动说 HeaderActivity

在那个onCreate setContentView(R.layout.header);设置header.xml

在这个类中编写你所有的按钮点击事件,然后

现在在其他活动中扩展 HeaderActivity。 喜欢,

public class SecondActivity extends HeaderActivity
{
}

显示不同的布局..

在按钮下方的 header.xml 中放置一个 LinearLayout,并在其他活动中使用

ViewGroup vg = (ViewGroup) findViewById(R.id.lldata);
ViewGroup.inflate(getApplicationContext(), R.layout.listwitter, vg);

这里lldata是header.xml中的LinearLayout

在差异活动中显示不同的布局。

【讨论】:

  • 谢谢,我为我的项目使用了类似的实现,但我有this issue。如果您能找出问题所在,请回答。
【解决方案2】:

您应该能够使用您所说的基本 OOP 策略。创建一个处理 onClick 事件的父活动。然后,您的所有活动都应该扩展该父级。只要方法不是私有的,他们就会自动访问 onClick 事件。

如果您需要在每个活动中对 onClicks 执行不同的操作,则可能值得以不同的方式处理此问题,或者使用回调样式。基本结构示例:

public class ParentActivity extends Activity {
    public void onMyButtonClick(View v) {
        // do your thing
    }
}

public class ChildActivity extends ParentActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // your activity
    }
}

【讨论】:

  • 我已经做到了,但是 Parentactivity 的点击事件不是 Working ChildActivity
【解决方案3】:
  1. 定义带有 4 个按钮的标题布局,并在 xml 布局中定义 android:onClick 属性,例如android:onClick="btnHomeClick"android:onClick="btnSearchClick"....等

  2. 通过扩展Activity定义一个Abstract类并实现所有这些点击方法:

    public void btnHomeClick(View v) {
    }
    
    public void btnSearchClick(View v)
    {
    }
    
  3. 在您的 xml 布局文件中按标签包含该标题布局。 现在在您的每个活动类中扩展上述活动类。

  4. 这样你只需要定义一次点击事件。

【讨论】:

  • 非常感谢先生!! @Paresh Mayani :)
  • @VishalPatoliyaツ 很高兴它帮到了你!
【解决方案4】:

你好 Bindalbhai..

MainActivity myAct = (MainActivity) this.getParent();

TextView myTitleText = (TextView)myAct.findViewById(R.id.txtTitle);

这可能对你有帮助。或者您可以为此使用 ViewGroup

谢谢。

【讨论】:

【解决方案5】:

创建一个静态对象以监听按钮点击。基于此对象处理所有活动中的事件。

例如说 Constants.class:

public class Constants {
    private static int buttonState1;
        public static int getButtonState(){
        return buttonState1;
    }
    public static int  setButtonState(int x){
        buttonState1=x;
    }


}

在你的活动中:

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

bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                                   Constants.setButtonState(1);
                         }
            });

在其他活动中

if(Constants.getButtonState()==1)
                //do something

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    相关资源
    最近更新 更多