2012-05-04 12 views
0

私はAndroidには新しく、Androidに適用されるコンテキストは完全に理解していません。私は少し理解していますが、完全ではありません。 DatePickerDialogに曜日と月だけが表示されるように、AndroidのDatePickerを変更しようとしています。私はstackoverflowに尋ねた、私は3つのコードブロックの形で1つの答えが与えられた。コードは以下の通りです。私の問題は、 、thisに1つのエラーが発生しています...エラーはgetContext()です。 onClickListenerの場合、getContext()は未定義です。そこで、以下のコードを見て、getContext()の修正点は何でしょうか? getContext()メソッドを作成すると、コードが実際に悪化します。コンテキストを使用すると、getContext(), this,の代わりにnullがエラーを消去しますが、nullであってはなりません。thisである必要があります。Android DatePickerのコンテキスト

static final int ID_DATEPICKER = 0; 
private int myYear, myMonth, myDay; 
TextView dateDisplay; 
Dialog mDialog; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    dateDisplay = (TextView)findViewById(R.id.dateDisplay); 

    Button datePickerButton = (Button)findViewById(R.id.datepickerbutton); 
    datePickerButton.setOnClickListener(datePickerButtonOnClickListener); 
    } 
private Button.OnClickListener datePickerButtonOnClickListener 
= new Button.OnClickListener(){ 

    @Override 
    public void onClick(View v) { 
     final Calendar c = Calendar.getInstance(); 
     mDialog = new CustomDPDialog(getContext(), this, 
     c.get(Calendar.YEAR), c.get(Calendar.MONTH), 
     c.get(Calendar.DAY_OF_MONTH)); 
     mDialog.show(); 
     DatePicker dp = findDatePicker((ViewGroup) mDialog.getWindow().getDecorView()); 
     if (dp != null) { 
     ((ViewGroup) dp.getChildAt(0)).getChildAt(0).setVisibility(View.GONE); 
     } 
    } 

    class CustomDPDialog extends DatePickerDialog { 
     public CustomDPDialog(Context context, 
       OnDateSetListener callBack, int myYear, int myMonth, 
       int myDay) { 
       super(context, callBack, myYear, myMonth, myDay); 
       } 
     @Override 
     public void onDateChanged(DatePicker view, int year, int month, int day) { 
      super.onDateChanged(view, year, month, day); 
      mDialog.setTitle((month + 1) + "-" + day + "-"); 
     } 

    } 

    private DatePicker findDatePicker(ViewGroup group) { 
     if (group != null) { 
      for (int i = 0, j = group.getChildCount(); i < j; i++) { 
       View child = group.getChildAt(i); 
       if (child instanceof DatePicker) { 
        return (DatePicker) child; 
       } else if (child instanceof ViewGroup) { 
        DatePicker result = findDatePicker((ViewGroup) child); 
        if (result != null) 
         return result; 
       } 
      } 
     } 
     return null; 
    } 
}; 
} 

答えて

0

v.getContext() 

または

getApplicationContext() 

は、私は時々、あなたのためのトリックを行う必要があります問題

+0

いずれも有効ではありません。しかし、私はあなたの推理でどこに行くのかを見ています。 v.getContextはビューのコンテキストを必要としないので、私はそれがDatePickerのコンテキストを望んでいると思うので、動作しないと思います。だから私はv。Thaksの代わりにすべての変数を使って助けをしています! – kirktoon1882

+0

hmmm ...私はv.getContext()がいずれかの方法で動作すると思います。さて、私は何がうまくいったのか教えてください!! – ByteMe

+1

すべての提案でEclipseは "メソッドgetContext(View.OnClickListener)は新しい型のために未定義ですView.OnClickListener(){}"私はどのビットのコードが未定義であるかを確かめていません。 – kirktoon1882

0

getActivity()を引き起こす可能性があります()getApplicationContext以来初めてお勧めしてみてください。

0

ActivityName.thisが動作するはずです

関連する問題