簡體   English   中英

將TextView設置為Array值

[英]Setting TextView to Array value

我正在嘗試制作一個小型應用,該應用在EditText數字中接受輸入,並從數組中獲取相應的值,並將其顯示在TextView中

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final EditText e = (EditText) findViewById(R.id.editText1);
    final TextView t = (TextView) findViewById(R.id.textView1);
    Button b = (Button) findViewById(R.id.button1);

    Resources res = this.getResources();

    String arr[] = getResources().getStringArray(R.array.example);

    final Editable input = e.getText();

    final String in2 = input.toString();
    int number = Integer.parseInt(in2);

    if(number < 0){
        t.setText("Input is too small");
    } else if (number > 666){
        t.setText("Input is too large");
    } else {
        final String out = arr[number].toString();
        b.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                t.setText(in2);
            }
        }); 
    } 
}

我想要它,如果輸入為0並單擊按鈕,則TextView為A。

<string-array name="example">
    <item >A</item>
    <item >B</item>
    <item >C</item>
    <item >D</item>
</string-array>

不幸的是,每當我在模擬器或電話上啟動它時,它立即崩潰。 有人知道我在做什么錯嗎?

問題是,當您啟動應用程序時, editText為空。

因此in2等於"" ,因此您無法將此值解析為Integer。

將其移到您的onClick方法中:

b.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {                
        int number = Integer.parseInt(e.getText().toString());
        if(number < 0){
            t.setText("Input is too small");
        } else if (number >= arr.length){
            t.setText("Input is too large");
        } else {
            t.setText(arr[number]);
        }
    }); 
} 

好吧,僅通過查看代碼,我認為它不會完成您想要實現的目標!

final Editable input = e.getText();

final String in2 = input.toString();
int number = Integer.parseInt(in2);

這發生在onCreate方法中。 因此,當應用程序運行時,它會立即嘗試提取一些文本,但是沒有要提取的內容,因此Integer.parseInt(in2)將拋出運行時異常。

這是我建議的工作流程,可能涉及一些代碼重寫。

在onCreate方法中:

  1. 完成后,通過findViewById獲取所需的所有對象。

  2. 將偵聽器設置為editText字段和按鈕-editText的偵聽器負責跟蹤用戶鍵入的任何更改。在偵聽器給出的方法中,包括以下代碼:

    stringFromEditText = editText.getText().toString();

    當然,您應該早些聲明這些內容以使其起作用:

    字符串stringFromEditText;

    EditText editText;

之后,您可以調用一個updateTextView()方法(您自己定義)。 您甚至都不需要按鈕! 一切都在偵聽器的方法中完成(例如onTextChanged

updateTextView()方法中,不要忘記添加一些邏輯來處理錯誤的輸入或空輸入:當遇到錯誤的輸入時,只需將stringFromEditText的值設置為“ 0”即可。 因此,您以后總是可以成功解析它->不再崩潰!

我知道提供所有代碼並沒有太詳細。 但我希望這會有所幫助。

暫無
暫無

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

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