1

デバイスがSDK <= 13をサポートしている場合、Toastを表示したいだけです

ターゲット SDK が 14 以上の場合にユーザーにイベントを追加できるようにする小さなプログラムを作成していますが、それ以外の場合はトーストを表示しますが、API レベル 8 または < をサポートするデバイスで自分のコードを使用しているときに、残念ながらアプリが停止しましたToast の代わりに 14 を使用します。以下のコードを参照してください。

final Button button = (Button) findViewById(R.id.button1);
         button.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 // Perform action on click
                 if(Build.VERSION.SDK_INT > 8 && Build.VERSION.SDK_INT < 13)
                 {   
                     Toast.makeText(getApplicationContext(), "Some Message", Toast.LENGTH_LONG).show();                             
                }                
                 else 
                 {
                     Intent calIntent = new Intent(Intent.ACTION_INSERT);
                     calIntent.setData(Events.CONTENT_URI);
                     calIntent.putExtra(Events.TITLE, title.toString());
                     calIntent.putExtra(Events.EVENT_LOCATION, KEY_LOCATION);
                     calIntent.putExtra(Events.DESCRIPTION, description.toString());
                     startActivity(calIntent);   
                }
             }
         });
    } 

ログキャット:

10-30 12:24:27.142: E/AndroidRuntime(330): FATAL EXCEPTION: main
10-30 12:24:27.142: E/AndroidRuntime(330): java.lang.NoClassDefFoundError: android.provider.CalendarContract$Events
10-30 12:24:27.142: E/AndroidRuntime(330):  at com.example.multileveljson.ProductDetailActivity$1.onClick(ProductDetailActivity.java:51)
10-30 12:24:27.142: E/AndroidRuntime(330):  at android.view.View.performClick(View.java:2408)
10-30 12:24:27.142: E/AndroidRuntime(330):  at android.view.View$PerformClick.run(View.java:8816)
10-30 12:24:27.142: E/AndroidRuntime(330):  at android.os.Handler.handleCallback(Handler.java:587)
10-30 12:24:27.142: E/AndroidRuntime(330):  at android.os.Handler.dispatchMessage(Handler.java:92)
10-30 12:24:27.142: E/AndroidRuntime(330):  at android.os.Looper.loop(Looper.java:123)
10-30 12:24:27.142: E/AndroidRuntime(330):  at android.app.ActivityThread.main(ActivityThread.java:4627)
10-30 12:24:27.142: E/AndroidRuntime(330):  at java.lang.reflect.Method.invokeNative(Native Method)
10-30 12:24:27.142: E/AndroidRuntime(330):  at java.lang.reflect.Method.invoke(Method.java:521)
10-30 12:24:27.142: E/AndroidRuntime(330):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
10-30 12:24:27.142: E/AndroidRuntime(330):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
10-30 12:24:27.142: E/AndroidRuntime(330):  at dalvik.system.NativeStart.main(Native Method)

ターゲット SDK >= 14 を使用しているデバイスにイベントを追加できますが、ターゲット SDK <= 13 を使用しているデバイスでトーストを表示できません....

4

2 に答える 2

3

に置き換えProductDetailActivity.thisてみてくださいgetApplicationContext()

また、14+ SDK である 4.0 で導入されたカレンダーの連絡先。

Build.VERSION.SDK_INT <= 13

4.0 より前はandroid.provider.Calendar

あなたはそれを調査したいかもしれません。

于 2013-10-30T06:58:39.087 に答える
1

使用しているクラスCalendarContract.Eventsは API レベル 14 で追加されているため、使用したい場合に例外が発生するのはそのためです。Api のバージョンは 14 である必要があります。

于 2013-10-30T06:58:17.633 に答える