18

たとえば、次のコード:

if (Build.VERSION.SDK_INT > Build.VERSION_CODES.GINGERBREAD) {

  myCalendarView.setOnDateChangeListener(
    new OnDateChangeListener() {

      @Override
      public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
        Toast.makeText
        (
          getApplicationContext(), ""+dayOfMonth, 0
        ).show();        
      }

    }
  );

}  

エラーが発生します:

説明 リソース パス ロケーション タイプ 呼び出しには API レベル 11 が必要です (現在の最小値は 8): android.widget.CalendarView#setOnDateChangeListener example.java /example/src/com/example/example line 20 Android Lint Problem

コンパイル時にこのエラーが発生する理由を理解しています。しかし、ソース Java クラスを特定の API レベル 11 でのみ使用されるようにマークする方法はありますか? または、API レベル 11 を超えるデバイスでのみコードがレイト バインド/ジットされるように、コード ブロックを define/similar で囲みますか? 私が望むものを達成するための最良の解決策は何ですか? (これは、それが可能なデバイスで CalendarView を使用してアクティビティを提供することです。)

4

2 に答える 2

33

これで問題が解決するかどうかわかりませんが、

しかし、バージョンを確認するために使用しているものは、API 9 では機能しません (API 8 以降をサポートしています)。

以下を使用する必要があります。

if (Build.VERSION.SDK_INT > 9) { 

または、問題のある関数は API 11 であるため、「SDK_INT>10」を確認します。

次に、Eclipse での lint エラーについては、人々のコメントに従って、lint エラーを無効にするか、@SuppressLint("NewAPi") またはその関数のターゲットを 11 に追加します。

于 2013-03-19T15:15:50.983 に答える