按后退按钮时避免退出应用程序

时间:2013-12-13 01:25:07

标签: android stack

我不知道为什么每次点击默认后退按钮,它都会立即关闭我的应用程序。

我不使用:

  清单xml文件中的

_ android:noHistory =“true”
     _ newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)开始之前新   活性

我在Manifest xml文件中的活动是:

<activity
    android:name="com.example.canvas_bar.member.MemberActivity"
    android:screenOrientation="portrait"
    android:label="@string/title_activity_member" >
</activity>

我的backPress功能:

 @Override
    public void onBackPressed() 
    {
       Log.e("back", "Last matches : pressed accepted");
       super.onBackPressed();
    }

我的替换活动的代码(在Tabhost的标签中)

  public void replaceContentView(String id, Intent newIntent) 
{
    try
    {
        View view =  getLocalActivityManager()
                    .startActivity(id,newIntent) 
                    .getDecorView();
        this.setContentView(view);
    }
    catch(Exception e)
    {
        String msg = e.getMessage();
        Log.d("Change Activity", msg);
    }
}

在Log Cat中,它显示:

  

要求TRACE停止,但未运行

请帮帮我。感谢

3 个答案:

答案 0 :(得分:1)

我想这是TabHost的默认行为。您只是替换ContentView。如果你像这样开始另一个Activity -

startActivity(new Intent(this,YourClass.class));

其中YourClass是一个单独的类,那么这个问题不会发生,但是因为你已经在同一个Tab中替换它,问题就发生了。一个简单的调整是明确地回到之前的Activity。您可以在onBackPressed中提供Intent返回上一个Activity

编辑 - 您无法获取之前的Tab,但您可以自行存储信息。只需在班级中保留上一个选项卡的记录,以便收听onTabChanged()

static TabHost mytabs;

mytabs = getTabHost();

mytabs.setOnTabChangedListener(new OnTabChangeListener() {
    @Override
    public void onTabChanged(String arg0) {         

        Log.i("***Selected Tab", "Im currently in tab with index::" + mytabs.getCurrentTab());
    }       
});  

您将获得当前标签以便存储它。当发生下一次更改时,只需检索存储的值并将其替换为当前值。

答案 1 :(得分:0)

无法查看日志的来源。但是发布的源代码只使用默认行为,即停止活动。

尝试注释掉super.onBackPressed();

答案 2 :(得分:0)

发布用于开始此活动的代码。可能是你完成()启动后的调用活动。因此,按下可能会关闭应用程序,而不是回到之前的活动。