android - 无法覆盖 onBackPressed 和 onKeyDown - Android

标签 android onkeydown activitygroup pressed

我正在使用 Tabhost 实现一个应用程序。在我的一个选项卡中,我正在执行多个 Activity (ActivityGroup)。

例如:我在 Activity 一中,在 ListView 中单击后我转到同一选项卡中的 Activity 二。问题是当我按下后退按钮时,应用程序关闭,我想返回 Activity 一。我已经覆盖了 onBackPressed() 方法和 onKeyDown 方法,它们不会被调用,它们不会被触发。我看过很多有相同问题的帖子,但显示的任何解决方案都不起作用。

很高兴能得到您的帮助!

创建标签:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_tab);

    TabHost fichas = getTabHost();
    fichas.setup();     

    TabHost.TabSpec spec=fichas.newTabSpec("tab1");
    Intent i = new Intent(getApplicationContext(), AllProductsActivity.class);
    spec.setContent(i);
    spec.setIndicator("Hoy");
    fichas.addTab(spec);

    TabHost.TabSpec spec2=fichas.newTabSpec("tab2");
    Intent i2 = new Intent(getApplicationContext(), QueActivity.class);
    spec2.setContent(i2);
    spec2.setIndicator("Que");
    fichas.addTab(spec2);

    spec=fichas.newTabSpec("tab3");
    spec.setContent(R.id.Cuando);
    spec.setIndicator("Cuando");
    fichas.addTab(spec);

    spec=fichas.newTabSpec("tab4");
    spec.setContent(R.id.Donde);
    spec.setIndicator("Donde");
    fichas.addTab(spec);

}

在 QueActivity.class 上,我正在实现 onClickListener 以在同一选项卡中显示新 Activity :

public void onItemClick(AdapterView<?> a, View v, int position, long id) {
            //creo el nuevo objeto para poder llamarlo

            Intent intent = new Intent(QueActivity.this, ProductosCategorias.class);

            //Creo la informacion para pasar entre actividades
            Bundle informacion= new Bundle();
            intent.putExtra("eventos",categorias.get(position).getEventos());
            Toast.makeText(getApplicationContext(), "has seleccionado "+ categorias.get(position).getNombre(), Toast.LENGTH_SHORT).show();
            //New activity
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            View view = (getLocalActivityManager().startActivity("productos", intent)).getDecorView();
            setContentView(view);                                   
        }

请求的 Activity 。这是我想覆盖 onBackPressed() 的地方

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_productos_categorias);
    //Do stuff here 
    });

在我覆盖的 onCreate 方法之外:

public void onBackPressed(){
    System.out.println("Fires");
    //Go back to the other intent
}

问题是当我按下后退键时,我没有触发覆盖的方法,而是关闭了应用程序

最佳答案

这是因为在 ActivityGroup 中,onActivityResult 事件是在您的 ActivityGroup 类中调用的,而不是在 activity 中调用的你在调用它。

这个堆栈溢出问题可以解决你的问题:

Issue with onActivityResult in tab activity

关于android - 无法覆盖 onBackPressed 和 onKeyDown - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17963025/

相关文章:

android - 示例 Activity 组代码

android - 使用选项卡中的 ActivityGroup 切换 Activity (Android)

android - 集成 Pusher Android Titanium 模块时出现运行时错误

android - Cookie 不适用于移动浏览器(使用 ASP.NET MVC )

javascript - window.frames[0].document.onkeydown 在 Firefox 中不起作用

android - Android 上的多个游戏 Controller

android - Flurry 原生广告整合

android - 不匹配的输入'结果期望 RPAREN : While running jython script

javascript - 如何区分 onKeyDown 和 onClick 事件(输入 =“radio” )