打开Android活动中的NullPointerException

时间:2016-03-01 16:04:54

标签: android android-activity

当我从其他布局中投射元素时,我收到了这个错误。

final  Spinner mainIng = (Spinner) findViewById(R.id.spinner);
final  EditText sub1 = (EditText) findViewById(R.id.sub1);
final  EditText sub2 = (EditText) findViewById(R.id.sub2);
final  EditText sub3 = (EditText) findViewById(R.id.sub3);
final  EditText sub4 = (EditText) findViewById(R.id.sub4);
final  EditText sub5 = (EditText) findViewById(R.id.sub5);
final  EditText sub6 = (EditText) findViewById(R.id.sub6);

继承我的错误

  

引起:java.lang.NullPointerException:尝试调用虚拟   方法'android.view.View android.view.Window.findViewById(int)'上的一个   null对象引用

3 个答案:

答案 0 :(得分:1)

你是从onCreate()调用的吗?如果是,请尝试将其移至onCreateView()并使用膨胀的视图调用它或稍后调用它。

如果你这样做,那么findViewById将无效,因为尚未创建窗口。

findViewById() returns null when I call it in onCreate()

答案 1 :(得分:0)

您需要在onCreate()中初始化视图:

public class YourActivity extends Activity {
Spinner mainIng; 

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_activity_xml);
    mainIng= (Spinner) findViewById(R.id.spinner);
}

答案 2 :(得分:0)

将代码放在后面 您活动中的setContentView

如果您希望它们在您的活动的每个方法中都可用,请将它们声明为字段。

public class MyActivity extends Activity {
         Spinner mySpiner;


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

       mySpiner = (Spinner) findViewById(R.id.mySpiner);

然后在之后实例化它们。