2012-04-17 14 views
0

TextViewテキストをクリップボードにコピーしようとしたときに何か問題がありますか?私の活動クラスでコンテキストメニューから編集テキストからクリップボードにテキストをコピーする際に例外がありますか?

マイコード:

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    String selectedItem = item.getTitle().toString().trim(); 
    try { 
    ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); 
    ClipData clip; 
    if (selectedItem.equals("Copy Query")) { 
     clip = ClipData.newPlainText("Query",tv1.getText()); 
    clipboard.setPrimaryClip(clip); 
    }   
    return true; 
} 

エラー:

04-17 03:10:54.056: E/AndroidRuntime(503): FATAL EXCEPTION: main 
04-17 03:10:54.056: E/AndroidRuntime(503): java.lang.NoClassDefFoundError: android.content.ClipboardManager 
04-17 03:10:54.056: E/AndroidRuntime(503): at com.ewe.radixcalculator.CalculatorActivity.onContextItemSelected(CalculatorActivity.java:68) 
04-17 03:10:54.056: E/AndroidRuntime(503): at android.app.Activity.onMenuItemSelected(Activity.java:2199) 
04-17 03:10:54.056: E/AndroidRuntime(503): at com.android.internal.policy.impl.PhoneWindow$ContextMenuCallback.onMenuItemSelected(PhoneWindow.java:2744) 
04-17 03:10:54.056: E/AndroidRuntime(503): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:143) 
04-17 03:10:54.056: E/AndroidRuntime(503): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855) 
04-17 03:10:54.056: E/AndroidRuntime(503): at com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:137) 
04-17 03:10:54.056: E/AndroidRuntime(503): at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:874) 
04-17 03:10:54.056: E/AndroidRuntime(503): at android.widget.AdapterView.performItemClick(AdapterView.java:284) 
04-17 03:10:54.056: E/AndroidRuntime(503): at android.widget.ListView.performItemClick(ListView.java:3382) 
04-17 03:10:54.056: E/AndroidRuntime(503): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696) 
04-17 03:10:54.056: E/AndroidRuntime(503): at android.os.Handler.handleCallback(Handler.java:587) 
04-17 03:10:54.056: E/AndroidRuntime(503): at android.os.Handler.dispatchMessage(Handler.java:92) 
04-17 03:10:54.056: E/AndroidRuntime(503): at android.os.Looper.loop(Looper.java:123) 
04-17 03:10:54.056: E/AndroidRuntime(503): at android.app.ActivityThread.main(ActivityThread.java:4627) 
04-17 03:10:54.056: E/AndroidRuntime(503): at java.lang.reflect.Method.invokeNative(Native Method) 
04-17 03:10:54.056: E/AndroidRuntime(503): at java.lang.reflect.Method.invoke(Method.java:521) 
04-17 03:10:54.056: E/AndroidRuntime(503): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
04-17 03:10:54.056: E/AndroidRuntime(503): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
04-17 03:10:54.056: E/AndroidRuntime(503): at dalvik.system.NativeStart.main(Native Method) 
04-17 03:10:54.056: E/AndroidRuntime(503): Caused by: java.lang.ClassNotFoundException: android.content.ClipboardManager in loader dalvik.system.PathClassLoader[/data/app/com.ewe.radixcalculator-2.apk] 
04-17 03:10:54.056: E/AndroidRuntime(503): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 
04-17 03:10:54.056: E/AndroidRuntime(503): at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 
04-17 03:10:54.056: E/AndroidRuntime(503): at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 
+0

あなたのAPIレベルは? – candyleung

+0

android:minSdkVersion = "4" – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

+0

Android 2.2エミュレータとAndroid 2.2デバイスでこのエラーが発生しました。 – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

答えて

9

あなたのスタックトレースから、ClipboardManager使用しているが発見されていないことは明らかです。クイックルックアップは、Androidに2つのClipboardManagerがあることを示しています。

    以来
  1. ClipboardManager(android.text.ClipboardManager)API実装によると、私はあなたが使用することを推測することができます
  2. ClipboardManager(android.content.ClipboardManager)API 11

以来1後者はAPI 11にのみ含まれています。したがって、コードがエラーになります。

インポートセクションにandroid.text.ClipboardManagerをインポートしたため、Eclipseにエラーが表示されません。

問題を解決するには、正しいパッケージをインポートし、関連するAPIバージョンをポイントします。

古いバージョンにandroid.text.ClipboardManagerを使用したい場合は、問題ないと思います。ここで私はそれをやる方法です。お役に立てれば。

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    String selectedItem = item.getTitle().toString().trim(); 
    try { 
    ClipboardManager clipboard = new ClipboardManager(); 
    if (selectedItem.equals("Copy Query")) { 
     clipboard.setText(tv1.getText().toString()); 
    }   
    return true; 
} 
関連する問題