0

Java および Android プログラミングに比較的慣れていないので、なぜ私がNullPointerException?

 public class DpsFragment extends Fragment {
    Weapon weppy;

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

            weppy.setMaxdmg(200);
            weppy.setMindmg(100);
            TextView tv= (TextView) getView().findViewById(R.id.textView1); 
            tv.setText("hello");


            return inflater.inflate(R.layout.dpsfrag, container, false);

        }

    public class Weapon {
    private int mindmg;
    private int maxdmg;


    public Weapon(int mindmg, int maxdmg) {
    this.setMindmg(mindmg);
    this.setMaxdmg(maxdmg);
    }


    public int getMindmg() {
    return mindmg;
    }


    public void setMindmg(int mindmg) {
    this.mindmg = mindmg;
    }


    public int getMaxdmg() {
    return maxdmg;
    }


    public void setMaxdmg(int maxdmg) {
    this.maxdmg = maxdmg;
}
}}

非常に単純なコードであることはわかっていますが、どこが間違っているのかわかりません。助けてくれてありがとう。

4

2 に答える 2

4

weppy is nullだからNPE ...初期化するのを忘れたと思います。

そうかも知れないweppy = new Weapon(mindmg,maxdmg);

また

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        weppy = new Weapon(100,200);  <<<<<<See here

        TextView tv= (TextView) getView().findViewById(R.id.textView1); 
        tv.setText("hello");


        return inflater.inflate(R.layout.dpsfrag, container, false);

    }
于 2012-07-16T18:32:40.067 に答える
0

また、アクセスしているビューがまだ作成されていないため、 onCreateView 内で getView() を使用することはできません。したがって、次のようにする必要があります。

View view = inflater.inflate(R.layout.dpsfrag, container, false);

TextView tv = (TextView) view.findViewById(R.id.textView1);

tv.setText("こんにちは");

ビューを返します。

于 2012-12-12T11:30:48.090 に答える