2013-01-23 132 views
14

我對android非常陌生,我正在關注這個examplegetActivity()它在哪裏定義?

的代碼表示,我們需要做的這些步驟來得到一個對話框:

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 

// 2. Chain together various setter methods to set the dialog characteristics 
builder.setMessage(R.string.dialog_message) 
     .setTitle(R.string.dialog_title); 

// 3. Get the AlertDialog from create() 
AlertDialog dialog = builder.create(); 

但哪裏定義的getActivity()方法?

我找不到那個方法。

+0

調用方法之間的區別就像是與調用「this.getActivity()」,使「這個」對象需要有方法可用。 – JDx

+0

在這種情況下,它在一個片段 – njzk2

回答

38

getActivity()方法給出了活動的上下文。您可以使用YourActivityName.this代替它。

方法getActivity()通常用於分段以獲取插入或充滿它們的活動的上下文。

AlertDialog.Builder builder = new AlertDialog.Builder(YourActivityName.this); 

,或者如果你在你的活動編寫的代碼本身甚至

AlertDialog.Builder builder = new AlertDialog.Builder(this); 

意志的鍛鍊。請隨時詢問任何疑問

+6

'YourActivityName.this' –

+0

我沒有得到任何異常。是否需要調用任何方法來顯示警告框? – sriram

+1

你應該調用dialog.show() – Aram

0

本文介紹如何在Fragment創建AlertDialog。在片段中,您可以通過調用getActivity()方法獲得相應的Activity。但在你的情況下,我假設你正在做這個Activity。所以你不必撥打getActivity()。只是使用this

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
0

getActivity();是android Fragment的一種方法,如果你想在你的活動中顯示對話框,只需通過this而不是getActivity()

0

getActivity()是您從中擴展的超類活動的成員方法。它在活動類本身中定義。事實上onCreate(),onPause()和所有其他功能本身也在父親活動類中定義。

1

構造函數AlertDialog.Builder需要Context參數。 Context可從Activity,Service等訪問,因爲它們都是extendContext,並且可以作爲this傳遞。

方法getActivity()被聲明爲其他人在Fragment類中提到的。

+0

嗯我試過我的'MyActivity.this',但它不工作。請注意,我位於'button'的'setOnClickListener'內。 – sriram

2

新的AlertDialog.Builder()需要上下文作爲輸入參數。所以試試就像

AlertDialog.Builder builder = new AlertDialog.Builder(yourActivityName.this); 
0

我有完全相同的問題,最後我發現我真的懷疑... 只需添加:

dialog.show(); 

...和瞧。它是。 不知道爲什麼這沒有在原始示例中說明!?

0

更新的Android API級別23

使用getContext()代替getActivity()

0

// 1.實例與其構造方法的AlertDialog.Builder

AlertDialog.Builder builder = new AlertDialog.Builder(yourActivityName.this); 

// 2.鏈一起各種設置方法設置對話框特徵

builder.setMessage(R.string.dialog_message).setTitle(R.string.dialog_title); 

// 3.獲取AlertDialog from()

AlertDialog dialog = builder.create(); 

// 4.顯示AlertDialog考勤

dialog.show();