我已經在其他語言中進行了很多年的專業編碼,但是我在Android上很新,而且我從堆棧溢出等網站學到很多東西。FindByView獲取Button中的EditText click方法返回null
經過數小時的搜索後,我努力嘗試在按鈕單擊方法中獲得對EditText的引用。 EditText和Button都是同一個Activity的一部分。
這裏是我的activity_my.xml的削減部分:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:id="@+id/my_layout"
tools:context=".MyActivity" >
<EditText android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="textCapWords"
android:singleLine="true"
android:id="@+id/name" />
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/name"
android:text="@string/save"
android:id="@+id/save" />
</RelativeLayout>
而且我MyActivity.java的削減部分:
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getLayoutInflater().inflate(R.layout.activity_my, null));
findViewById(R.id.save).setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
saveClick(view);
}
});
}
public void saveClick(View view)
{
EditText editText = (EditText) view.findViewById(R.id.name); // this is always null
if (editText != null)
{
String name = editText.getText().toString();
}
}
}
我想這是因爲我試圖使用view參數上的findViewById方法。我記得在某處閱讀按鈕點擊事件的參數是按鈕本身,而不是佈局。如果這是正確的,我如何獲得對佈局的引用以便使用findViewById方法?或者還有其他問題嗎?
我見過的例子中,onClick事件包裝了一個匿名方法,您可以成功使用findViewById,因爲(我認爲)您基本上嵌套在onCreate事件中。但是,我想保留我的按鈕單擊事件作爲一個單獨的(非匿名)方法。
感謝您提前提供任何幫助。