FindViewById给出错误

时间:2015-02-09 12:25:19

标签: android

我不明白为什么这个代码在我输入行后就会出错 EditText input =(EditText)findViewById(R.id.editText); 空白活动Hello World工作正常!

这是java代码.....

package com.example.abhishektiwari.deletethis;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.widget.EditText;


public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}
EditText input=(EditText) findViewById(R.id.editText);
}

这是xml代码..

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
android:orientation="vertical">


<EditText
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:id="@+id/editText"
    android:layout_alignParentTop="true"
    android:layout_alignParentEnd="true"
    android:hint="Type the mathematical expression here"
    />
<Button
    android:layout_alignParentEnd="true"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:text="Get SVG"
    android:id="@+id/button"

    />

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Result"
    android:textSize="30dp"
    android:id="@+id/textView"
    />

5 个答案:

答案 0 :(得分:2)

更改

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}
EditText input=(EditText) findViewById(R.id.editText);

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    EditText input=(EditText) findViewById(R.id.editText);
}

由于您无法访问成员函数之外的视图。

答案 1 :(得分:1)

修改您的活动

 public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    EditText input=(EditText) findViewById(R.id.editText);
    }
    }

您无法访问成员函数之外的视图。

答案 2 :(得分:1)

这是因为当上下文仍然为null时,您在方法范围之外声明并初始化了EditText。移动这一行

 EditText input=(EditText) findViewById(R.id.editText);
onCreate

之后的setContentView

答案 3 :(得分:1)

在onCreate中使用它,或者只是创建一个方法并将其放入其中并在onCreate中调用该函数。

EditText input=(EditText) findViewById(R.id.editText);

答案 4 :(得分:0)

您无法在活动生命周期中调用findViewById()之前的onCreate()等活动方法。成员变量初始化太早了。在onCreate()之后将初始化移至setContentView()