按下后退按钮时,我的Android应用程序不会退出

时间:2012-01-11 08:39:21

标签: android android-layout

我是Android编程的新手,我编写了一个只实现Activity.OnCreate方法的应用。我期望通过按BACK按钮返回上一个视图(由于我有基本的意图过滤器,它必须是主屏幕),但事实并非如此。我只是按下HOME按钮才能做到这一点。 (我已经在多个设备上测试了我的应用程序并且它的行为相同。)其他人是否也遇到了同样的问题?解决办法是什么? (我的应用程序的git repo在这里:https://github.com/falcondai/android_lab1

以下是我未能正确退出的活动(BACK键适用于所有其他活动):

public class NameGetterActivity extends Activity 
{
    private static final String TAG = "NameGetterActivity";

    private EditText name_fld;
    private Button submit_btn;
    private Button test_btn;

    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.name_getter);

        name_fld = (EditText)this.findViewById(R.id.editText1);
        submit_btn = (Button)this.findViewById(R.id.button1);
        test_btn = (Button)this.findViewById(R.id.button2);

        submit_btn.setOnClickListener(
                new OnClickListener() {
                    public void onClick(View v) {
                        Log.d(TAG, name_fld.getText().toString());

                        Intent i = new Intent(NameGetterActivity.this, HelloWorldActivity.class);
                        i.putExtra("name", name_fld.getText().toString());
                        startActivity(i);
                    }
                }
            );

        test_btn.setOnClickListener(
                new OnClickListener() {
                    public void onClick(View v) {
                        Log.d(TAG, "sensor activity button pressed");

                        Intent i = new Intent(NameGetterActivity.this, SensorActivity.class);
                        startActivity(i);
                    }
                }
            );
    }

}

5 个答案:

答案 0 :(得分:2)

您的layerout xml文件使用MediaController作为布局根,将其替换为LinearLayout

答案 1 :(得分:0)

你应该覆盖finish()

 @Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        // do something on back.
       this.finish();
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

然后调用此方法:

@Override
    public void onBackPressed() {
     this.finish();
    }

答案 2 :(得分:0)

在开始按下后退按钮的当前活动之前,请检查您是否完成了之前的活动。

即;

如果你打电话给finish();在函数startActivity(intent);之前,先前的活动将完成,不再存在于活动堆栈中。

答案 3 :(得分:0)

如果您在项目中使用HTML页面意味着此代码对您有帮助。如果您想要返回意味着只需在您的HTML页面中包含此javascript它肯定适用于所有Android模拟器。

<a onclick="history.back(-1)" data-role="button" data-icon="back" data-theme="e" style="padding:8px;"></a>

答案 4 :(得分:0)

我不明白你的问题,但这里可能有一些对你有帮助的建议。 首先,在manifest.xml中创建HomeActivity的launchMode =“SingleTask”,这将使您的HomeActivity只有单个实例。

第二次,我想你只想获得一些HomeActivity的信息(比如名字),所以试试方法 startActivityForResult(); 然后按电话回来的的setResult(意向);在NameGetterActivity中完成(); 并处理HomeActivity中 onActivityResult()中的信息(实现此方法就像onCreate onStart ...)。

(我想也许你的情况就像登录活动或注册活动,所以第二种方式在这种情况下很有用。)