Android:如何重新启动活动

时间:2016-01-20 07:47:45

标签: android android-activity restart

我试图在我的应用中重新启动一个活动,但我遇到了一些问题。

当我使用recreate();时,活动没有完全重启,EditTexts不会变空。

我也试过这段代码:

Intent myIntent = getIntent();
myIntent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
finish();
startActivity(myIntent);

BUT:

一开始,我的Activity有一个EditText,它会自动对焦。我在使用此代码时在焦点时打开键盘,在失去焦点时关闭:

txtNumber.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
         if (hasFocus) {
             imm.showSoftInput(txtNumber, InputMethodManager.SHOW_IMPLICIT);
         } else {
             imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
         }
    }
});

但是当Activity启动时它不起作用,所以我不得不将android:windowSoftInputMode="stateVisible"添加到AndroidManifest.xml。

问题在于:第二个代码(用于重启活动)忽略了这一点,并且在开始时不要打开键盘。

如何以编程方式在“活动开始”中打开键盘?或者如何使用recreate();完全重新启动活动?

抱歉英语不好,希望你能理解。

3 个答案:

答案 0 :(得分:2)

 Try this:
Intent intent = getIntent();
finish();
startActivity(intent);

答案 1 :(得分:0)

将焦点添加到EditText并在需要显示键盘时调用requestFocus()。

答案 2 :(得分:-1)

这个怎么样?:

map.events.register("click", map, function(e) {
            var position = map.getLonLatFromPixel(e.xy);
            position.transform(map.getProjectionObject(), new OpenLayers.Projection('EPSG:4326'));
            alert(JSON.stringify(position));
});