연습을 위해 WebView에서 클립 보드에 복사 한 단어를 토스트하는 응용 프로그램을 만들려고합니다. 문제는이 코드가 첫 번째 단어에 대해 작동한다는 것입니다 (아무 래도 3 회 토스트를 제외하고는 깜박임). 그러나 두 번째 단어를 복사하려고하면 "Unfortunately, (my app's name) has stopped"
이 표시되고 작동을 멈 춥니 다. 웹 사이트는 여전히 표시되지만 토스트 기능은 중지됩니다. 나는이 프로그램을 에뮬레이터에서 Eclipse를 사용하여 실행하고있다. Mr/Ms.jgriffsta의 조언에 뒤따라 try & catch 문을 추가 한 다음 두 번째로 "오류가 발생했습니다"라는 메시지를 두 번 토스트 한 다음 복사 된 단어를 두 번 토스트합니다. 다시 한번 깜박입니다.OnPrimaryClipChangedListener()는 한 번만 작동합니다.
//ItemDetailActivity.java
public class ItemDetailActivity extends Activity {
private WebView mWeb;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.item_detail);
Intent intent = getIntent();
String link = intent.getStringExtra("LINK");
mWeb = (WebView)findViewById(R.id.web);
mWeb.loadUrl(link);
final ClipboardManager cm = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
cm.addPrimaryClipChangedListener(new OnPrimaryClipChangedListener(){
@Override
public void onPrimaryClipChanged(){
ClipData.Item item = cm.getPrimaryClip().getItemAt(0);
String text = item.getText().toString();
Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();
}
});
}
}
---- 로그 캣 --------
07-18 18:15:07.530: E/chromium(837): [ERROR:gl_surface_egl.cc(153)] No suitable EGL configs found.
07-18 18:15:07.540: E/chromium(837): [ERROR:gl_surface_egl.cc(620)] GLSurfaceEGL::InitializeOneOff failed.
07-18 18:15:07.540: E/chromium(837): [ERROR:gl_surface_egl.cc(153)] No suitable EGL configs found.
07-18 18:15:07.540: E/chromium(837): [ERROR:gl_surface_egl.cc(620)] GLSurfaceEGL::InitializeOneOff failed.
07-18 18:15:07.540: E/chromium(837): [ERROR:gpu_info_collector.cc(86)] gfx::GLSurface::InitializeOneOff() failed
07-18 18:15:10.360: E/chromium(837): [ERROR:simple_backend_impl.cc(186)] File structure does not match the disk cache backend.
07-18 18:15:10.360: E/chromium(837): [ERROR:simple_backend_impl.cc(402)] Simple Cache Backend: wrong file structure on disk: /data/data/com.kariga.rssreader1/app_webview/Cache
07-18 18:16:03.910: E/AndroidRuntime(837): FATAL EXCEPTION: main
07-18 18:16:03.910: E/AndroidRuntime(837): Process: com.kariga.rssreader1, PID: 837
07-18 18:16:03.910: E/AndroidRuntime(837): java.lang.NullPointerException
07-18 18:16:03.910: E/AndroidRuntime(837): at com.kariga.rssreader1.ItemDetailActivity$1.onPrimaryClipChanged(ItemDetailActivity.java:34)
07-18 18:16:03.910: E/AndroidRuntime(837): at android.content.ClipboardManager.reportPrimaryClipChanged(ClipboardManager.java:234)
07-18 18:16:03.910: E/AndroidRuntime(837): at android.content.ClipboardManager$2.handleMessage(ClipboardManager.java:76)
07-18 18:16:03.910: E/AndroidRuntime(837): at android.os.Handler.dispatchMessage(Handler.java:102)
07-18 18:16:03.910: E/AndroidRuntime(837): at android.os.Looper.loop(Looper.java:136)
07-18 18:16:03.910: E/AndroidRuntime(837): at android.app.ActivityThread.main(ActivityThread.java:5017)
07-18 18:16:03.910: E/AndroidRuntime(837): at java.lang.reflect.Method.invokeNative(Native Method)
07-18 18:16:03.910: E/AndroidRuntime(837): at java.lang.reflect.Method.invoke(Method.java:515)
07-18 18:16:03.910: E/AndroidRuntime(837): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
07-18 18:16:03.910: E/AndroidRuntime(837): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
07-18 18:16:03.910: E/AndroidRuntime(837): at dalvik.system.NativeStart.main(Native Method)
---- 편집 코드로 -------- & catch 문을 시도
final ClipboardManager cm = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
cm.addPrimaryClipChangedListener(new OnPrimaryClipChangedListener(){
@Override
public void onPrimaryClipChanged(){
ClipData.Item item = cm.getPrimaryClip().getItemAt(0);
try{String text = item.getText().toString();
Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();
}
catch(Exception e){
Toast.makeText(getApplicationContext(), "Error occured", Toast.LENGTH_SHORT).show();
}
}
});
---- 판 후 로그 캣 --------
07-18 18:57:28.780: E/chromium(882): [ERROR:gl_surface_egl.cc(153)] No suitable EGL configs found.
07-18 18:57:28.780: E/chromium(882): [ERROR:gl_surface_egl.cc(620)] GLSurfaceEGL::InitializeOneOff failed.
07-18 18:57:28.790: E/chromium(882): [ERROR:gl_surface_egl.cc(153)] No suitable EGL configs found.
07-18 18:57:28.790: E/chromium(882): [ERROR:gl_surface_egl.cc(620)] GLSurfaceEGL::InitializeOneOff failed.
07-18 18:57:28.790: E/chromium(882): [ERROR:gpu_info_collector.cc(86)] gfx::GLSurface::InitializeOneOff() failed
답장을 보내 주셔서 감사합니다. 나는 logcat에 보고서를 추가했습니다. 파일 구조에 또 다른 문제가있는 것 같습니다. 어쨌든, 나는 try & catch 문을 쓸 것이다. – user3850893