如何知道android中的活动何时完成?
在我的android应用程序中,我想更改输入法。因此,我启动了一个新的如何知道android中的活动何时完成?,android,android-intent,Android,Android Intent,在我的android应用程序中,我想更改输入法。因此,我启动了一个新的活动,显示设备中的语言设置。然后用户可以更改它。但是,我想知道用户是否更改了它。所以我也为此写了一个函数。到目前为止我的代码是 Intent enableIME = new Intent(android.provider.Settings.ACTION_INPUT_METHOD_SETTINGS); startActivityForResult(enableIME,0);
活动
,显示设备中的语言设置。然后用户可以更改它。但是,我想知道用户是否更改了它。所以我也为此写了一个函数。到目前为止我的代码是
Intent enableIME = new Intent(android.provider.Settings.ACTION_INPUT_METHOD_SETTINGS);
startActivityForResult(enableIME,0);
if(isInputMethodEnabled()){
activateshadow.setBackgroundDrawable(getResources().getDrawable(R.drawable.button_pressed));
activateshadow.setText("Deactivate Shadow");
prefs.edit().putBoolean("Activate", false).commit();
}else{
Toast.makeText(MainActivity.this,"You haven't change the input method to simpleIME.In order to activate you must change it.",Toast.LENGTH_SHORT).show();
}
我的is inputMethodEnabled函数是
public boolean isInputMethodEnabled() {
boolean isIME ;
String id = Settings.Secure.getString(getApplicationContext().getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD);
String [] name = id.split("/.");
// Toast.makeText(MainActivity.this,"s:"+name[1]+":s",Toast.LENGTH_SHORT).show();
if(name[1].contains("SimpleIME") ){
isIME = true ;
}else{
isIME = false;
}
// Toast.makeText(MainActivity.this,"Returning..."+isIME,Toast.LENGTH_SHORT).show();
return isIME;
}
if(isInputMethodEnabled())
总是失败,因为当打开新意图(设置)
时,需要一些时间才能将输入方法更改为simpleme
。如何解决此问题?当启动的活动
在onActivityResult
中返回时,您将捕获该问题。您提供给startActivityForResult
的requestCode
和活动的结果将是一个参数。活动
还可以设置您未询问的其他数据
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 555) {//555 is the intent ID you gave in startActivityForResult(enableIME,555);
if (resultCode == /*Result1*/)
//Do something
else {
//Do something else
}
}
}
调用startActivityForResult(enableIME,0)时需要唯一的id代码>
最好还是用一个命名变量替换555。如果你看一下android的生命周期,当活动完成时,整个android调用onDestroy()方法。
所以你可以调用并重写这个方法。
只需写下:
@override
protected void onDestroy(){
// code
super.onDestroy();
}
你可以在android中管理和覆盖生命周期的所有部分
e、 g:onResume以获取当前活动
我希望这对你有所帮助你的问题标题直截了当,正文却不是。请在这里开始第二个问题以避免混淆。谢谢。但是这里的结果代码是什么,我不会从第二个活动中返回任何内容。实际上,我只是启用我的输入法,然后按后退按钮返回到我的应用程序主活动。不要担心。您可以在onActivityResult
ok中检测活动何时完成。那么我应该如何在代码中使用这个方法呢。我应该传递的参数值是什么。?对于requestCode,我不在乎。我明白了。其他两个参数呢?谢谢John。我会尝试一下这一个onDestroy
并不总是被调用,例如,如果活动被从最近事件列表中踢出。
@override
protected void onDestroy(){
// code
super.onDestroy();
}