2011-10-12 74 views
24

我有一個自定義視圖,想訪問其活動中可用的字符串。我看過在視圖類中使用getContext()的代碼,但是沒有方法可以通過意圖訪問已爲其活動提供的字符串。如何在活動中爲其自定義視圖創建一個字符串?自定義視圖如何訪問其活動?

回答

30

在視圖類返回的的getContext()方法在其構造函數上傳遞的上下文。通常這就是你想要的Activity(Activity擴展上下文)。 所以這可能對你的作品:

((Activity)getContext()).someMethod(...); 
+1

思茅完美,非常感謝。 – turtleboy

+9

對於視圖直接由活動創建的情況,這是一個很好的解決方案。這並非總是如此。如果該視圖是對話框或PopupWindow的視圖,則將該上下文作爲活動進行投擲將導致錯誤 – EyalBellisha

+0

正如@EyalBellisha指出的那樣,這可能並不總是奏效。在上下文包裝的兼容性小部件的情況下,例如從'android.support.v *'擴展的情況下,'getContext()'將不是類型Activity。例如,對於AppCompatButton,它是TintContextWrapper類型,不能轉換爲Activity。 –

-5

我是java和android仍然noob,所以這可能無法正常工作,但我只是想幫助。

你應該能夠使用「putExtra」和「getExtra」參數意圖/活動傳遞,例如:

在您的主要活動:

Intent EditDebtActivity = new Intent(getBaseContext(), EditDebt.class); 
     EditDebtActivity.putExtra(DbAdapter.KEY_ROWID,dRowID); 
     EditDebtActivity.putExtra(DbAdapter.KEY_DEBT, dName); 
     EditDebtActivity.putExtra(DbAdapter.KEY_STARTINGAMOUNT, dStartAmount); 
     EditDebtActivity.putExtra(DbAdapter.KEY_CURRENTAMOUNT, dCurrentAmount); 
     EditDebtActivity.putExtra(DbAdapter.KEY_DUEDATE, dDueDate); 
     EditDebtActivity.putExtra(DbAdapter.KEY_INTERESTRATE, dInterestRate); 
     EditDebtActivity.putExtra(DbAdapter.KEY_MINPAYMENT, dMinPayment); 
     startActivity(EditDebtActivity); 

然後在「的onCreate」在新視圖的方法,使用以下命令:

Bundle extras = getIntent().getExtras(); 
    dRowID = extras.getLong(DbAdapter.KEY_ROWID); 
    String rowidname = extras.getString(DbAdapter.KEY_DEBT); 
    currentamount = extras.getDouble(DbAdapter.KEY_CURRENTAMOUNT); 
    startingamount = extras.getDouble(DbAdapter.KEY_STARTINGAMOUNT); 
    duedate = extras.getInt(DbAdapter.KEY_DUEDATE); 

很明顯,我在這裏用我自己的代碼,但我傳遞行的信息到一個新的活動,當用戶點擊一個按鈕。

有關使用putextra和getextra這個SO鏈接獲取更多信息:Sending arrays with Intent.putExtra

希望這會有所幫助,這是我的第一筆捐款回饋社會:)

+0

[R嗨tahnks你的第一個貢獻:)我有一個列表視圖,其中列出了JPEG文件名的根。當用戶選擇時,用一個文件名觸發一個意圖。接收活動可以獲取文件名,但是它是自定義視圖的視圖不能訪問文件名。謝謝。 – turtleboy

相關問題