没有从EditText获得任何东西

Mal*_*uri 1 android android-edittext

嗨,我是Android开发的新手,我只是开发一个应用程序take(在EDIT-TEXT)输入(整数)转换为厘米并显示为普通文本(在文本视图中).但是我进入Edit-Text时我无法检索它我发布了我的xml和java代码:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"  
>

    <EditText
        android:id="@+id/edittext1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"    
        android:hint="@string/Hint1"
        android:inputType="number" />

    <Button
        android:id="@+id/Convert"
        android:text="@string/Convert"
        android:layout_width="250dp"
        android:layout_height="wrap_content"        
        android:layout_gravity="center"
        android:gravity="center"
        android:textSize="30sp"
    />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/Result" 
       android:textSize="30sp"
     />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

*Java代码:*

public class MainActivity extends Activity
{   
    TextView textView1 = null;
    EditText edittext1 = null;
    int no2 = 0;
    int centimeters1 = 0;
    String text1 ="ssssss";
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); 

        edittext1 = (EditText) findViewById(R.id.edittext1);
        textView1 = (TextView) findViewById(R.id.textView1);    
        text1 = edittext1.getEditableText().toString().trim();
        System.out.print(text1);
        System.out.print(".................................................");

        centimeters1= no2* 24 ;
        Button button1 = (Button) findViewById(R.id.Convert);

        button1.setOnClickListener(new View.OnClickListener()
        {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                textView1.setText("Your Total is:" + text1);
            }

        });

    }
Run Code Online (Sandbox Code Playgroud)

我尝试使用"system.out.println",以便我可以跟踪值,但它没有工作(在模拟器中,当我输入值后运行它只显示"你的总数是:"而没有别的).谢谢,提前,请帮我解决一下这个.

sle*_*ica 9

你的代码是正确的,但却被取代了.

你没有得到任何东西,EditText因为你在创建后立即检查它的内容.调用该函数onCreate的原因是:)

移动这个:

text1 = edittext1.getEditableText().toString().trim();
Run Code Online (Sandbox Code Playgroud)

这里:

button1.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        text1 = edittext1.getEditableText().toString().trim();
        textView1.setText("Your Total is:" + text1);
    }
});
Run Code Online (Sandbox Code Playgroud)

这样,您可以在按下按钮时获取文本,而不是在创建时获取文本,当它为空时.


Rag*_*ood 7

移动text1 = edittext1.getEditableText().toString().trim();到您的onClick()方法来代替.

目前,您text1在加载布局后立即分配.此时,您的EditText为空,因此它也会获得一个空值.将它放在onClick()方法中将确保仅在单击Button时才获取值.

    button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            text1 = edittext1.getEditableText().toString().trim();
            textView1.setText("Your Total is:" + text1);
        }
    });
Run Code Online (Sandbox Code Playgroud)