2015-07-22 44 views
0

我試圖從我的MainActivity類中分離事件處理代碼。因此,我做了一個名爲ButtonHandler類,它實現View.OnClickListenerAndroid onClick未獲取視圖

public class ButtonHandler implements View.OnClickListener { 

@Override 
public void onClick(View v){ 
    EditText txtCorpoToday = (EditText) v.findViewById(R.id.txtCorpoToday); 
    txtCorpoToday.setText("changing text"); 
} 

但由於一些奇怪的原因,應用程序在emulator壓碎。我試圖找出問題的所在,但logcat console是給我這個錯誤:

7-22 01:11:58.669 2823-2839/android.process.acore I/ContactLocale﹕ AddressBook Labels [en-US]: [, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, Α, Β, Γ, Δ, Ε, Ζ, Η, Θ, Ι, Κ, Λ, Μ, Ν, Ξ, Ο, Π, Ρ, Σ, Τ, Υ, Φ, Χ, Ψ, Ω, , А, Б, В, Г, Д, Ђ, Е, Є, Ж, З, И, І, Ї, Й, Ј, К, Л, Љ, М, Н, Њ, О, П, Р, С, Т, Ћ, У, Ф, Х, Ц, Ч, Џ, Ш, Щ, Ю, Я, , א, ב, ג, ד, ה, ו, ז, ח, ט, י, כ, ל, מ, נ, ס, ע, פ, צ, ק, ר, ש, ת, , ا, ب, ت, ث, ج, ح, خ, د, ذ, ر, ز, س, ش, ص, ض, ط, ظ, ع, غ, ف, ق, ك, ل, م, ن, ه, و, ي, , ก, ข, ฃ, ค, ฅ, ฆ, ง, จ, ฉ, ช, ซ, ฌ, ญ, ฎ, ฏ, ฐ, ฑ, ฒ, ณ, ด, ต, ถ, ท, ธ, น, บ, ป, ผ, ฝ, พ, ฟ, ภ, ม, ย, ร, ฤ, ล, ฦ, ว, ศ, ษ, ส, ห, ฬ, อ, ฮ, , ㄱ, ㄴ, ㄷ, ㄹ, ㅁ, ㅂ, ㅅ, ㅇ, ㅈ, ㅊ, ㅋ, ㅌ, ㅍ, ㅎ, , あ, か, さ, た, な, は, ま, や, ら, わ, #, ] 
07-22 01:20:28.870 2823-2830/android.process.acore I/art﹕ Debugger is no longer active 
07-22 02:12:42.475 2823-2837/android.process.acore V/BackupServiceBinder﹕ doBackup() invoked 
07-22 02:12:42.477 2823-2837/android.process.acore E/DictionaryBackupAgent﹕ Couldn't read from the cursor 
07-22 04:29:17.419 2823-2830/android.process.acore I/art﹕ Debugger is no longer active 

最後,我這樣做是因爲隨着應用的不斷增長,我覺得我的MainActivity類越來越臃腫,這是混亂。最好的辦法是什麼?

謝謝!

回答

0

您試圖用錯誤的View初始化EditTextOnClick(View v)其中vButton或其他View被按下。它本身不能包含EditText。如果您在Fragment嘗試在onCreateView

View view = View.inflate(getActivity(), R.layout.yours_layour, null); 
EditText txtCorpoToday = (EditText) view.findViewById(R.id.txtCorpoToday); 

還是在Activity工作onCreate

EditText txtCorpoToday = (EditText)findViewById(R.id.txtCorpoToday); 
+0

我似乎無法調用'getActivity()',因爲我在一個單獨的類。 – Jim

+0

所以你需要使用'Context'而不是'getActivity()' –

+0

我所有的'View'都已經存在,所以我不確定是否必須再次膨脹它?另外,我只是從'Fragments'的'onCreate'提供'ButtonHandler'類的'EditText'實例。這會是一個好方法嗎? – Jim

0

findViewById應該被用來找到其父視圖。當onClick被調用時,v將會是你點擊的按鈕。