Android 当按钮在onCreate方法外声明时应用程序崩溃

Android 当按钮在onCreate方法外声明时应用程序崩溃,android,Android,以下代码使应用程序崩溃 public class SharedPreferencesActivity extends AppCompatActivity { Button b1=(Button)findViewById(R.id.buttonSave); //**ERROR** @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); s

以下代码使应用程序崩溃

public class SharedPreferencesActivity extends AppCompatActivity {

Button b1=(Button)findViewById(R.id.buttonSave); //**ERROR**

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_shared_preferences);
}
而下面的代码可以很好地工作

 public class SharedPreferencesActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_shared_preferences);
    Button b1=(Button)findViewById(R.id.buttonSave);//**REPLACED BUTTON DECLARATION**
}

为什么会发生这种情况?

如果希望全局引用按钮,则应在外部声明它,然后在onCreate中初始化它


在学习Android时,您应该阅读更多Java基础知识

为什么会发生这种情况?因为你不能在createView上声明像这样的东西,因为它还没有初始化。在询问之前,请用谷歌搜索你的问题。我想做的是在onCreate方法之外使用按钮。发现首先我需要在方法外部声明button,并使用oncreate.button进行初始化//声明按钮变量public class SharedReferencesActivity扩展AppCompatActivity{@Override protected void onCreateBundle savedInstanceState{super.onCreatesavedInstanceState;setContentViewR.layout.activity_shared_首选项;button=button findViewByIdR.id.buttonSave;//创建时初始化}
Button b1; //declare the button variable

public class SharedPreferencesActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_shared_preferences);

    b1 = (Button) findViewById(R.id.buttonSave); //initialize on creation
}