隐藏活动并显示它的机器人

时间:2014-05-20 10:25:09

标签: android

我想阻止活动完成。我知道我必须覆盖onBackPressed和remover super.onBackpressed。并做我的编码。知道我想知道我应该在onBackpressed中写什么不删除它但是把它放在后台。我在下面找到了一个解决方案。

  @Override
      public void onBackPressed() {
        moveTaskToBack(true);
        return;
      }

但它将关闭应用程序并像主页按钮一样运行。但我想转到我之前来自的活动。我需要的一件主要事情是......我有一个按钮可以从任何应该仍然离开的地方打开这个特定的活动。因为它是一个带有搜索栏的AudiopLAYER ..从哪里我称之为..它应该显示其当前的进展。我的意思是我需要一种隐藏背景活动的方法。从我称之为的任何活动。它应该从堆栈调用。我不想打开它的新实例.. 通过谷歌搜索,我有一个想法,但不知道如何实现它..

@覆盖     public void onBackPressed(){

    //super.onBackPressed();
    Intent backIntent = new Intent(this, SongsList.class);
    backIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
    startActivity(backIntent);
}

与此相关的问题是here

我想这样做,但是应该从任何其他活动中看出来。

我找到了backPressed的解决方案,但我怎么能把它改成我的需要..

  @Override
    public void onBackPressed() {
       Log.d("CDA", "onBackPressed Called");
       Intent setIntent = new Intent(Intent.ACTION_MAIN);
       setIntent.addCategory(Intent.CATEGORY_HOME);
       setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
       startActivity(setIntent);
    }

2 个答案:

答案 0 :(得分:1)

@Override
    public void onBackPressed() {    
        Intent backIntent = new Intent(this, AudioPlayer.class);
        startActivity(backIntent);
    }

试试这个.. 这将调用您的新活动,但不会关闭当前的活动。

但它会存储在一个堆栈中。如果您不需要历史记录

noHistory = true
你的android清单中的

答案 1 :(得分:0)

Ciril的答案在某种程度上是正确的。因为通过覆盖onBackPressed,我们回到之前的活动而没有完成它。但它不是最终的,如果android需要资源,它可以删除它。我没有办法避免删除它。但我的应用程序工作正常。主要的是调用可能在堆栈中的Activity并打开特定的活动是必须的。

从堆栈打开活动并将其重新排序到堆栈顶部的代码是..

Intent intent = new Intent(Album.this, StaticAudioPlayer.class);

intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);// this flag reorder the activity to top 
startActivity(intent);