-1

私のアプリには、Bluetoothのオンとオフを切り替えるボタンがあります。トグルボタンの定義をクラスの一番上に移動しonResume();、アプリの外にnullpointerexceptionでクラッシュすると、コードの短いバージョンが表示されます。クラッシュ:

    public class MainActivity extends Activity {
        static final BluetoothAdapter myBluetooth = BluetoothAdapter.getDefaultAdapter();
        final ToggleButton tglbtn = (ToggleButton)findViewById(R.id.ToggleButton01);

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        if(myBluetooth == null){
            setContentView(R.layout.notsupported);  
        }
        else{
            setContentView(R.layout.supported);
        }
    }

        @Override
        public void onResume()
        {
            super.onResume();
            tglbtn.setChecked(myBluetooth.isEnabled());
            tglbtn.setOnClickListener(new OnClickListener(){
                 public void onClick(View v) { .......}
            }
        }
    }

final ToggleButton tglbtn = (ToggleButton)findViewById(R.id.ToggleButton01); 戻るonResume()と、アプリは正常に動作し、クラッシュしません。誰かがこれが発生する理由を説明できますか?

4

1 に答える 1

1

onCreate()でビューを割り当てていますか?具体的には、setContentView(X)の後に発生する必要があります。これは、この時点ですべてのビューがnull以外になるためです。

于 2012-08-06T19:25:10.430 に答える