-1

在我的应用程序中,我有一个按钮可以打开和关闭蓝牙,我注意到当我将切换按钮定义移动到类的顶部并且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) 之后发生。这样做的原因是因为此时所有视图都将是非空的。

于 2012-08-06T19:25:10.430 回答