在我的Android应用程序中,我想更改输入法。所以我开始一个新的Activity
,显示设备中的语言设置。然后用户可以更改它。然而,我想知道如果用户已经改变它。所以我也为此写了一个函数。到目前为止我的代码是......
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();
}
我的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())
总是失败,因为new intent(settings)
打开时需要一些时间才能将输入法更改为simpleIME
。如何解决这个问题?
答案 0 :(得分:0)
当Activity
中的已启动onActivityResult
返回时,您会抓住。您提供给requestCode
的{{1}}将是一个参数,startActivityForResult
的结果也是如此。 Activity
也可能会设置您未提及的其他数据。
Activity
调用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);
最好还是用命名变量替换555。
答案 1 :(得分:0)
@override
protected void onDestroy(){
// code
super.onDestroy();
}
你可以管理和覆盖android中所有生命周期的部分 例如:onResume获取当前活动
我希望这有帮助你