【问题标题】:Can I combine my code into some kind of "global activity"?我可以将我的代码组合成某种“全球活动”吗?
【发布时间】:2011-10-01 04:44:34
【问题描述】:

Android 上是否存在任何全局活动,例如我将代码放入该活动中,并且它会影响我项目中的所有活动?这发生在我身上,因为相同的代码是在多个活动中编写的,例如KeyEvent.KEYCODE_BACK

例如我在这里使用:

public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK)) {
            try {
                final Intent itnt_BackServices = new Intent(this,
                        BackServices.class);
                AlertDialog.Builder alertbox = new AlertDialog.Builder(this);
                alertbox.setTitle("Touch signs");
                alertbox.setMessage("Do you want to quit!");
                alertbox.setPositiveButton("Yes",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface arg0, int arg1) {
                                stopService(itnt_BackServices);
                                mPlayer.stop();

                                finish();
                            }
                        });
                alertbox.setNegativeButton("No",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface arg0, int arg1) {
                            }
                        });
                alertbox.show();
            } catch (Exception e) {
                // TODO: handle exception
            }
        }
        return false;
    }

我将其复制并粘贴到每个活动中,我宁愿使用某种全局活动。

【问题讨论】:

  • 如果您的应用不是游戏,请确认退出对用户体验不利

标签: android


【解决方案1】:

您可以创建一个扩展Activity 的类,然后像这样将CustomActivity 扩展为所有Activity 类。

public abstract class CustomActivity extends Activity{

    public abstract void initComponents();  // you can create a abstract method
    public abstract void addListner();       // you can create a abstract method

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {

         if ((keyCode == KeyEvent.KEYCODE_BACK)) {
              // your stuff here....
            }
        return true;
    }
}

现在你可以extend这个classextend任何类Activity

【讨论】:

    【解决方案2】:

    把你的第一个主要活动写在那里,然后简单地用这个活动扩展所有其他活动......例如。 MainActivity 是您的第一个也是主要活动,然后在那里编写此代码,然后简单地采取一个活动说它首先然后用 MainActivity 而不是 Activity 扩展它......!就是这样............

    【讨论】:

      【解决方案3】:

      我建议按照@Lalit Poptani 的建议扩展活动。既然有人这么说,我可以为此提供另一种工作方式。

      您可以创建一个您在 Activity 中实现的接口,包括 public boolean onKeyDown(int keyCode, KeyEvent event)(只是提醒您必须将代码实现到您的 Activity)

      创建一个执行 onKeyDown 操作的全局(静态)类/函数。

      public class ButtonHandler{
      
      public static boolean handleButton(Context context,int keyCode, KeyEvent event){
      
      ..... your code here
      
      }
      

      }

      只需将return ButtonHandler.handleButton(getApplicationContext(),keycode,event) 调用到您的onKeyDown 方法即可。

      但仍然 .. 覆盖活动是最好的方法。如果由于某种原因你不想扩展这是要走的路

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-30
        • 1970-01-01
        • 2011-01-27
        相关资源
        最近更新 更多