【问题标题】:Disable back button code not working in android禁用后退按钮代码在android中不起作用
【发布时间】:2016-04-11 11:31:17
【问题描述】:

我想禁用我的 android 应用程序的后退按钮。我想要做的是,当用户按下后退按钮时,什么都不应该发生。基本上就像 Javascript 中的 return false 一样。在stackoverflow中尝试了大多数答案,但似乎没有任何效果。以下是我目前正在使用的 MainActivity 中的代码,

package com.ws.gostock;

import android.os.Bundle;
import org.apache.cordova.*;

public class MainActivity extends CordovaActivity
{
   @Override
   public void onCreate(Bundle savedInstanceState)
   {
      super.onCreate(savedInstanceState);
      // Set by <content src="index.html" /> in config.xml
      loadUrl(Config.getStartUrl());
   }

   @Override
   public void onBackPressed()
   {
      System.out.println("back pressed");
   }
}

尝试在调试模式下运行,结果是,当我按下后退按钮时,应用程序关闭,然后代码开始调试。我不知道为什么。请有人帮我解决这个问题。

编辑:这是我的整个 MainActivity 类

【问题讨论】:

  • 删除super.onBackPressed();
  • @MikeM。做到了..还是不行
  • 哦,科尔多瓦。我不熟悉,但你看过this post吗?
  • @MikeM。是的..仍然是同样的问题:'(

标签: android back-button back-button-control


【解决方案1】:

我不知道为什么不赞成,但我解决了问题.. 这是我使用的代码,

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    // Set by <content src="index.html" /> in config.xml
   loadUrl(Config.getStartUrl());

   appView.setOnKeyListener(new View.OnKeyListener() 
   { 
       public boolean onKey(View v, int keyCode, KeyEvent event) 
       {
           if (event.getAction() == KeyEvent.ACTION_UP) 
           {
               if(keyCode == KeyEvent.KEYCODE_BACK) 
               {
                   if(t == null)
                   {
                       t = new Timer();
                       t.schedule(new reInitializeTimer(), 0, 1*1000);
                       Toast.makeText(getApplicationContext(), " Press Back again to Exit ", Toast.LENGTH_SHORT).show();
                   }
                   else if(backpress >= 1)
                   {
                       finish();
                   }

                   return true;
               }
               return onKeyUp(keyCode, event);
           }
           return onKeyDown(keyCode, event); 
       } 
  });
}

class reInitializeTimer extends TimerTask
{
    public void run()
    {
        backpress++;
        if(backpress > 3)
        {
            backpress = 0;
            t.cancel();
            t = null;
        }
    }
}

【讨论】:

  • 我收到错误:找不到符号方法 setOnKeyListener()。
猜你喜欢
  • 1970-01-01
  • 2014-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多