[英]onClick : EditText empty in android studio
我有最簡單的代碼,它以前曾經工作過,但現在由於某種原因,它不能工作,我不知道為什么! 這個問題很難用谷歌搜索。
我無法從EditText
獲取文本。 我創建了一個新項目,已經從另一個項目中復制了確切的代碼(在該項目中可以使用),但是在這里它不起作用。 我希望問題確實很明顯,而且我盯着它看了太久了。
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
public class MainActivity extends Activity {
String artist;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText edit = (EditText) findViewById(R.id.artistEditText);
artist = edit.getText().toString();
}
protected void tryLetter(View v){
System.out.println(artist);
Log.d("string", artist);
System.out.println("hi");
}
}
當我按下一個按鈕時,打印藝術家的println
根本不會顯示,並且Log.d
和tryletter
也不會被調用。
如果有區別,請參見以下布局文件。
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Ange en artist:"
android:id="@+id/artistTextLabel"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_marginTop="30dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/artistEditText"
android:layout_alignBottom="@+id/artistTextLabel"
android:layout_alignEnd="@+id/searchBtn" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sök"
android:id="@+id/searchBtn"
android:onClick="tryLetter"
android:layout_below="@+id/artistEditText"
android:layout_centerHorizontal="true" />
</RelativeLayout>
把這位artist = edit.getText().toString();
在該tryLetter
因為執行操作時需要從EditText
提取文本,這意味着onClick
並將tryLetter
方法public
因為它僅在您的方法
public
時才起作用
所以用這個
public void tryLetter(View v){
artist = edit.getText().toString();
System.out.println(artist);
Log.d("string", artist);
System.out.println("hi");
}
而不是protected void tryLetter(View v){
在像您這樣的簡單場景中,需要觸發一些操作才能從EditText獲取數據。 最好的方法是將獲取代碼放置在觸發器中,比如說一個Button的代碼塊中,或者放在一個監聽器中
在您的示例中,有兩個錯誤:
這是帶有兩個修復程序的代碼:
導入android.os.Bundle; 導入android.support.v7.app.AppCompatActivity; 導入android.util.Log; 導入android.view.View; 導入android.widget.EditText;
public class MainActivity extends AppCompatActivity {
private EditText edit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit = (EditText) findViewById(R.id.artistEditText);
}
public void tryLetter(View v){
String artist=edit.getText().toString();
System.out.println(artist);
Log.d("string", artist);
System.out.println("hi");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.