簡體   English   中英

“靜態”startActivity(Intent)方法?

[英]“Static” startActivity(Intent) method?

我有一個按鈕。 它的View.OnClickHandler實現類實例化了大約3個構造函數,這些構造函數來自對android.app.Activity對象的最近引用。 單擊時,我希望它打開位置設置面板,以便用戶可以通過啟動Settings.ACTION_LOCATION_SOURCE_SETTINGS意圖啟用GPS和/或基於網絡的位置。

混淆地將那個父Activity對象從構造函數傳遞給構造函數,所以我的onClick()方法可以看到它,有沒有辦法直接進入隱喻的靜態以太和尖叫,“嘿,Android ...啟動Settings.ACTION_LOCATION_SOURCE_SETTINGS “無需將實際的Activity對象用於其startActivity方法嗎?

這對我有用:

public class StartGame extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.start_game_activity);
    }

    public static void nextPass(Activity context) {
        Intent intent = new Intent(context,your.class);
        context.startActivity(intent);
    }

}

我相信你說你需要一個Activity對象用於new Intent的第一個參數或一些其他方法來生成意圖。 如果我錯了,請糾正我。 如果是這樣的話,你其實只需要一個Context對象( Activity是一個子類的Context ),可能不是特別有助於在這種情況下。

我需要查看代碼,以確保沒有辦法從您需要的位置整齊地獲取上下文對象。 可能有某種方法可以做到這一點(例如,從匿名對象范圍訪問外部變量;在Android上使用處理程序的相當常見的模式)。

我會說在我的一些應用程序中,我確實傳遞了大量的上下文對象。 我個人認為這種做法(稱為依賴注入)並不像一些工程師所想的那么糟糕。 如果您在應用程序的深處使用管理器或狀態負載的對象,則通過全局訪問器或自動依賴注入來隱藏這一事實,只是在論證這一事實。

以下是關於Android上下文對象的關於此主題的另外兩個類似問題:

在Android上獲取“上下文”的靜態方法?

在各地使用應用程序

如果您在同一個班級,請使用YourActivity.this作為上下文而不是this

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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