[英]“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上下文對象的關於此主題的另外兩個類似問題:
如果您在同一個班級,請使用YourActivity.this
作為上下文而不是this
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.