2

我遇到了一个奇怪的问题。

按后退键活动不会返回。在 logcat 它显示

04-15 19:24:09.063: V/Activity(23041): Tracking Key Up, activity is resumed: false

这是我的活动代码

package com.sandy.letsfixthat;

import android.app.Activity;
import android.app.LocalActivityManager;
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;


public class Slider extends Activity {
    TabSpec beginer,inter,dev;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        setContentView(R.layout.slider);
        TabHost th = (TabHost)findViewById(R.id.tabhost);

        LocalActivityManager mLocalActivityManager = new LocalActivityManager(this, false);

        // state will be bundle your activity state which you
        // get in onCreate
        mLocalActivityManager.dispatchCreate(savedInstanceState);
        th.setup(mLocalActivityManager);
        //tab for beginner
        beginer = th.newTabSpec("Begin");
        beginer.setIndicator("Beginner");
        Intent begin = new Intent(this, Beginner.class);
        beginer.setContent(begin);
        th.addTab(beginer);

        //tab for intermediate
        inter = th.newTabSpec("Inter");
        inter.setIndicator("Intermediate");
        Intent Intermediate = new Intent(this, Intermediate.class);
        inter.setContent(Intermediate);
        th.addTab(inter);

        //tab for developers
        dev = th.newTabSpec("Devel");
        dev.setIndicator("Other");
        Intent develop = new Intent(this, Developer.class);
        dev.setContent(develop);
        th.addTab(dev);
    }

    public boolean onCreateOptionsMenu(android.view.Menu menu) {
        // TODO Auto-generated method stub
        super.onCreateOptionsMenu(menu);
        MenuInflater blowUp = getMenuInflater();
        blowUp.inflate(R.menu.menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // TODO Auto-generated method stub
        switch (item.getItemId()){
        case R.id.aboutUs:
            Intent i = new Intent(this,About.class);
            startActivity(i);
            break;

        case R.id.exit:
            finish();
            break;

  /*    case R.id.setting:
            Intent setting = new Intent (this,Settings.class);
            startActivity(setting);
            break;                          */
        }
        return false;
    }

    @Override
    public void onPause() {
        // your code.
        super.onPause();
        finish();
    }
}

MainActivity 的代码

package com.sandy.letsfixthat;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener {
    Button go;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        go = (Button)findViewById(R.id.bgo);
        go.setOnClickListener(this);

    }

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        switch (arg0.getId()){
        case R.id.bgo:
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setMessage("NOTE:- this is an initial release. MORE TUTORIAL COMING IN NEXT UPDATE")
                   .setCancelable(false)
                   .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    // do things
                    Intent i = new Intent(MainActivity.this,Slider.class);
                    startActivity(i);
                }
            });
            AlertDialog alert = builder.create();
            alert.show();
            break;
        }
    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        finish();
    }
}

当我打开此滑块活动并按下后退按钮时,没有任何反应。按下后退按钮应该做的是退出应用程序。

4

3 回答 3

2

只需添加这一行:

mLocalActivityManager.dispatchResume();

为我工作!

于 2013-08-29T04:18:36.043 回答
0

通常,您不需要为后退按钮执行任何操作来终止您的活动。您需要做的不是覆盖onBackButtonPressed()onKeyDown()。或者,如果您确实覆盖了onKeyDown(),那么除了返回 false 之外,不要对键码 KEYCODE_BACK 执行任何操作。

请注意,这只会终止活动,而不是应用程序。如果要退出整个应用程序,那就有点棘手了。让我们知道这是否是您想要做的,我将扩展这个答案。

于 2013-08-29T04:54:20.463 回答
0

您可以使用以下方法覆盖后退按钮功能:

public void onBackPressed(){
  finish(); 
}

所以它会完成你的应用程序。请记住,这不是最好的解决方案,您不应该在 on pause 方法中使用 finish()。

于 2013-04-15T14:21:39.367 回答