簡體   English   中英

(Android)如何獲取EditText值?

[英](Android) How to grab EditText value?

我有一個應用程序應該:
1.如果Spinner值為“ 1”,則從EditText值執行特定的數學方程式
2.如果Spinner值為“ 2”,請從EditText值執行特定的數學方程式,我將得到“ NullPointerException”
這是我的代碼:

package org.infinitech.degreescalculator.app;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
public class MainActivity extends Activity{
    public Button button=(Button)findViewById(R.id.button);
    public String selectedItem;
    Integer number;
    Integer a;
    String numberTwo;
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final EditText input=(EditText)findViewById(R.id.input);
        final TextView answerText=(TextView)findViewById(R.id.answer);
        final Spinner spinner=(Spinner)findViewById(R.id.options);
            final String inputTwo=(String)getText(R.id.input);
    selectedItem=(String)spinner.getSelectedItem();
        button.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                if(selectedItem.equals("Fahrenheit to Celsius")){
                    a=Integer.parseInt(inputTwo);
                    number=a*100;
                    numberTwo=number.toString();
                    answerText.setText(numberTwo);
                }
            }
        });
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu){
        getMenuInflater().inflate(R.menu.main,menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item){
        return super.onOptionsItemSelected(item);
    }
}

您可以像這樣以String獲取值:

editTextObject.getText().toString()

實際上這行final String inputTwo=(String)getText(R.id.input); 不會給出任何值,因此只能直接在按鈕的onclick內獲取其文本。

更改此:

a=Integer.parseInt(inputTwo);

至:

a=Integer.parseInt(input.getText().toString());

您的問題是在您的onCreate方法中分配了selectedItem ,該方法在選擇微調器中的任何項目之前運行,因此始終為null 將分配給它的行移動到按鈕單擊偵聽器的onClick方法內部,它應該可以解決問題。

同樣,您可能還需要將inputTwo變量移到onClick方法中,因此在創建時也不會設置它,也永遠不會對其進行更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM