0

MySpinner.java

以下は私のカスタムアダプターです

public class MyAdapter extends ArrayAdapter<String>
{


public MyAdapter(Context context, int textViewResourceId,String[] objects)
{
    super(context, textViewResourceId, objects);
      // TODO Auto-generated constructor stub
}



public View getDropDownView(int position, View convertView,ViewGroup parent)
{
    return getCustomView(position, convertView, parent);
}


public View getView(int position, View convertView, ViewGroup parent) 
{
    return getCustomView(position, convertView, parent);
}



public View getCustomView(int position, View convertView, ViewGroup parent) 
{
      inflater1=(LayoutInflater)this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
      rowlayout=inflater1.inflate(R.layout.spinnerlayout, parent, false);
      txt1=(TextView)rowlayout.findViewById(R.id.textView1);
      txt1.setText(s[position]);                
      txt1.setTextSize(TypedValue.COMPLEX_UNIT_DIP,DropDownTextSize);
      txt1.setHeight(RowSize);
      return rowlayout;
 }

}

別のプロジェクトでカスタムスピナーを作成し、ライブラリプロジェクトとしてマークしました。

線形レイアウトのmain.xmlファイルがあるとします。カスタムスピナーのみを追加すると、main.xmlが同じプロジェクトまたは他のプロジェクトにある場合でも、エラーなしで正常に動作します。

しかし、カスタムスピナーと一緒に線形レイアウトに他のウィジェットを追加すると、そのmain.xmlが同じプロジェクトにない場合にのみ、nullポインター例外が発生します。

同じプロジェクトのmain.xmlの場合、問題なく機能します。

1)ターゲットAPIが異なるプロジェクトのパレットにカスタムスピナーが表示されないのはなぜですか?

2)他のプロジェクトのmain.xmlで、カスタムスピナーのみを追加すると、正しく機能しますが、ボタン、テキストビューなどの他のコンポーネントが一緒にある場合は、nullポインター例外が発生します。

txt1.setText(s[position]);

なぜこれが起こるのですか?

4

1 に答える 1

0

デバッガーでこれを確認する必要があります。txt1 が null で、レイアウトに問題があることを示しているか、s が null で、おそらくアダプターがまだ初期化されていないことを示しています。

コードを小さな部分に分割します。その行を 1 ステップ実行する前に、各行がデバッガーで使用する変数を調べます。あなたの問題が明らかになります。

于 2012-06-24T20:02:22.000 に答える