Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有android片段的java.lang.NullPointerException_Java_Android_Android Fragments_Nullpointerexception - Fatal编程技术网

带有android片段的java.lang.NullPointerException

带有android片段的java.lang.NullPointerException,java,android,android-fragments,nullpointerexception,Java,Android,Android Fragments,Nullpointerexception,我正在尝试在我的应用程序中实现片段。当我更改选项卡(使用抽屉布局)时,会出现java.lang.NullPointerException错误。我在主活动上测试了代码,它运行得很顺利。唯一的问题是当我在片段上应用它时。代码如下: import android.app.Fragment; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.LayoutInflater; i

我正在尝试在我的应用程序中实现片段。当我更改选项卡(使用抽屉布局)时,会出现
java.lang.NullPointerException
错误。我在主活动上测试了代码,它运行得很顺利。唯一的问题是当我在片段上应用它时。代码如下:

import android.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.*;

public class FragW extends Fragment {
    Spinner spinwatt ;
    Button calculate;
    EditText wattEdit;
    EditText costEdit;
    TextView resultText;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragw,container,false);
        calculate = (Button) getView().findViewById(R.id.calculate);
        wattEdit = (EditText) getView().findViewById(R.id.wattEdit);
        costEdit = (EditText) getView().findViewById(R.id.costEdit);

        calculate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                float wattVar = Float.parseFloat(wattEdit.getText().toString());
                float costvar = Float.parseFloat(costEdit.getText().toString());

                if (spinwatt.getSelectedItem().toString().equals("µW"))
                    wattVar = wattVar * (float) 0.000001;
                else if (spinwatt.getSelectedItem().toString().equals("mW"))
                    wattVar = wattVar * (float) 0.001;
                else if (spinwatt.getSelectedItem().toString().equals("kW"))
                    wattVar = wattVar * 1000;
                String resultvar = Float.toString(costvar * wattVar);
                resultText.setText(resultvar);

            }



        });
        spinwatt = (Spinner)getView().findViewById(R.id.spinwatt);
        ArrayAdapter<CharSequence> wattAdapter = ArrayAdapter.createFromResource(getActivity(),
                R.array.wattArray, android.R.layout.simple_spinner_item);
        wattAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinwatt.setAdapter(wattAdapter);

        return v;

    }
第25行是:
calculate=(按钮)getView().findViewById(R.id.calculate)。但是,所有类似的行都会导致此错误(第25、26、27、55行)。我还尝试用定义初始化变量(在第16行到第20行),但仍然得到相同的错误。
请告诉我该怎么做。

更改此选项

    calculate = (Button) getView().findViewById(R.id.calculate);
    wattEdit = (EditText) getView().findViewById(R.id.wattEdit);
    costEdit = (EditText) getView().findViewById(R.id.costEdit);

片段中的膨胀视图初始化视图

    calculate = (Button) getView().findViewById(R.id.calculate);
    wattEdit = (EditText) getView().findViewById(R.id.wattEdit);
    costEdit = (EditText) getView().findViewById(R.id.costEdit);


片段中的膨胀视图初始化视图

您的视图尚未创建,因此
getView()
为空,因此更改

calculate = (Button) getView().findViewById(R.id.calculate);
wattEdit = (EditText) getView().findViewById(R.id.wattEdit);
costEdit = (EditText) getView().findViewById(R.id.costEdit);
spinwatt = (Spinner)getView().findViewById(R.id.spinwatt);


您的视图尚未创建,因此
getView()
为空,因此更改

calculate = (Button) getView().findViewById(R.id.calculate);
wattEdit = (EditText) getView().findViewById(R.id.wattEdit);
costEdit = (EditText) getView().findViewById(R.id.costEdit);
spinwatt = (Spinner)getView().findViewById(R.id.spinwatt);

onCreateView()
中,
getView()
返回
null
,因为您尚未将视图返回到框架

在您刚刚充气的
视图上调用
findViewById()

onCreateView()
中,
getView()
返回
null
,因为您尚未将视图返回到框架


在刚才膨胀的
视图上调用
findViewById()
v

onCreateViewgetView中关于getView的另一个问题在onCreateView()中为空,因为您没有返回View。在onActivityCreated()中使用,或者使用v而不是getView()。另外一个关于onCreateViewgetView中的getView的问题在onCreateView()中为空,因为您没有返回view。在onActivityCreated()中使用或使用v而不是getView()谢谢您的帮助,它使我了解了我的错误。谢谢您的帮助,它使我了解了我的错误。
calculate = (Button) v.findViewById(R.id.calculate);
wattEdit = (EditText) v.findViewById(R.id.wattEdit);
costEdit = (EditText) v.findViewById(R.id.costEdit);
spinwatt = (Spinner)v.findViewById(R.id.spinwatt);