[英]How to know when Activity is finished in android?
在我的Android應用中,我想更改輸入法。 因此,我開始一個新的Activity
,該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
需要花費一些時間。 如何解決這個問題?
當啟動的Activity
返回onActivityResult
時,您會捕獲到。 您提供給startActivityForResult
的requestCode
以及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);
時需要一個唯一的ID startActivityForResult(enableIME,0);
startActivityForResult(enableIME, 555);
最好還是用命名變量替換555。
如果您查看android的生命周期,則當活動結束時,整個android會調用onDestroy()方法。 這樣您就可以調用並覆蓋此方法。 只需要寫:
@override
protected void onDestroy(){
// code
super.onDestroy();
}
您可以在android中管理和覆蓋生命周期的所有部分,例如:onResume以獲取當前活動
我希望這對你有幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.