Android 台灣中文網

標題: 新手請教與畫面物件配對問題 [打印本頁]

作者: wahaha3q    時間: 2018-6-10 13:46
標題: 新手請教與畫面物件配對問題
本帖最後由 wahaha3q 於 2018-6-10 13:48 編輯

各位前輩大家好
最近我在練習書上的範例時 在與畫面物件配對上有些疑問

以下是書上的範例:package com.danny.radiobtn;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.RadioGroup;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    TextView txv;
    RadioGroup ticketType;

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

    public void show(View v) {
        TextView txv = (TextView) findViewById(R.id.txv);
        RadioGroup ticketType = (RadioGroup) findViewById(R.id.ticketType);

        switch (ticketType.getCheckedRadioButtonId()) {
            case R.id.adult:
                txv.setText("買全票");
                break;
            case R.id.child:
                txv.setText("買半票");
                break;

            case R.id.senior:
                txv.setText("買敬老票");
                break;
        }
    }
}

我試著把  TextView txv = (TextView)findViewById(R.id.txv);
RadioGroup ticketType = (RadioGroup)findViewById(R.id.ticketType);
放到onCreate裡面  雖然執行後畫面會出現,但只要按了button後就會閃退完全無法執行...請問是這種寫法有問題嗎? 感謝~  



作者: muska1116    時間: 2018-6-11 00:58
本帖最後由 muska1116 於 2018-6-11 01:01 編輯

你在最上面已經有宣告過全域變數
TextView txv;
RadioGroup ticketType;

所以在 onCreate 裡面不用再宣告一次,
TextView txv = (TextView) findViewById(R.id.txv);
RadioGroup ticketType = (RadioGroup) findViewById(R.id.ticketType);

只要賦值給他就好
txv = (TextView) findViewById(R.id.txv);
ticketType = (RadioGroup) findViewById(R.id.ticketType);

不然 onCreate 裡的會只是與上面宣告同名的區域變數,真正 show 裡面呼叫的還是未賦值





歡迎光臨 Android 台灣中文網 (https://apk.tw/) Powered by Discuz! X3.1