FindViewByID - 空指针异常! [ANDROID工作室]

FindViewByID - Null Pointer Exception! [ANDROID STUDIO]

我是 Android Studio 的新手,所以有很多事情需要帮助。

其中之一就是烦人 findViewById()

这是我最重要的部分 MainActivity.java

public class MainActivity extends ActionBarActivity {

public Button kreisd;
public Button kugeld;
public Button kreiscalc;

public Context con;

public EditText radius_eingabe;

public TextView kreis_ergebnis_vol;
public TextView kreis_ergebnis_G;

public String str1;

public double st1;
public double G_kreis;
public static final double PI = 3.141592653589793d;


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

    kreisd = (Button)findViewById(R.id.kreis);
    kugeld = (Button)findViewById(R.id.kugel);
    kreiscalc = (Button)findViewById(R.id.calc_kreis);

    kreisd.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            con = MainActivity.this;
            setContentView(R.layout.kreislay);
        }
    });

    kreiscalc.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            con = MainActivity.this;

            str1 = radius_eingabe.toString();
            st1 = Double.parseDouble(str1);
            G_kreis = PI*st1*st1;
            kreis_ergebnis_G = (TextView)findViewById(R.id.G_kreis);
            kreis_ergebnis_G.setText("" + G_kreis);



        }
    });


}` 

它总是给我那个错误:(又是最重要的部分)

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference

我知道,很多人认为 kreiscalc,(导致错误的按钮)不存在! 但确实如此。我有两种不同的布局:一种是所有其他内容,另一种是 kreiscalc。那么,这个 findViewById() - 方法是否只能找到位于第一个(和主要)布局中的 ID?我需要帮助。感谢您的关注!

编辑:知道了!只需使用 LayoutInflanter!所以:

final LayoutInflanter lf = getLayoutInflanter(); View view2 = lf.inflate(R.layout.YOURLAYOUTNAME, null); Button kreiscalc = (Button) view2.findViewById(R.id.calc_kreis);

到目前为止,我了解到 "current" 视图中不存在 ID 为 calc_kreis 的按钮,这就是 findViewById return 为空的原因。

方法 findViewById 只会 return 您在 setContentView 上设置的视图所包含的小部件。如果按钮放在其他视图上,您​​的代码将永远无法工作。

是的 findViewById 仅在活动视图中查找视图。