簡體   English   中英

如何知道Activity在Android中何時完成?

[英]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時,您會捕獲到。 您提供給startActivityForResultrequestCode以及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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM