我是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);
}
}
);
}
}
答案 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 ...)。
(我想也许你的情况就像登录活动或注册活动,所以第二种方式在这种情况下很有用。)