안녕하세요 안드로이드 Fragment 내에 WebView에서 뒤로 가기 버튼 클릭 시..(초보입니다.)
조회수 2748회
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() != KeyEvent.ACTION_DOWN)
return true;
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (mWebView.canGoBack()) {
mWebView.goBack();
} else
return true;
}
});
Fragment에 웹뷰를 적용시킨 상태이고, 핸드폰으로 뒤로가기 버튼 클릭 시 액티비티 밖으로 나가는 것이 아닌 웹뷰 안에서 뒤로가기가 적용이 되게 Fragment 안에 이렇게 코드를 작성했는데요. 앱 실행 시 이 fragment로 가기만 하면 앱이 중지가 됩니다. 코드에서 고쳐야할 부분이 있나요? 도와주시면 감사드립니다
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
LostFragment의
<init>
에서 NullPointerException이 발생하는 것으로 보아 mWebView.setOnKeyListener() 함수가 Fragment의 생성자에서 호출된 것으로 보입니다. Fragment의 생성자가 호출되는 시점에는 View가 바인드 되기 전이기 때문에 mWebView는 null을 가진 상태입니다. setOnKeyListener 코드를 onCreateView() 함수에 작성해 보시기 바랍니다.이렇게 하는 이유는 Fragment의 라이프사이클 링크를 참고하세요.
https://developer.android.com/guide/components/fragments.html?hl=ko
-
(•́ ✖ •̀)
알 수 없는 사용자
-
-
05-19 19:52:45.207 5033-5033/com.chani.ssari E/AndroidRuntime: FATAL EXCEPTION: main Process: com.chani.ssari, PID: 5033 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.webkit.WebView.setOnKeyListener(android.view.View$OnKeyListener)' on a null object reference at com.chani.ssari.LostFragment.<init>(LostFragment.java:205) at com.chani.ssari.TabFragment$MyAdapter.getItem(TabFragment.java:73) at android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:97) at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:943) at android.support.v4.view.ViewPager.populate(ViewPager.java:1091) at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:608) at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:570) at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:551) at android.support.design.widget.TabLayout$ViewPagerOnTabSelectedListener.onTabSelected(TabLayout.java:2008) at android.support.design.widget.TabLayout.selectTab(TabLayout.java:1025) at android.support.design.widget.TabLayout.selectTab(TabLayout.java:995) at android.support.design.widget.TabLayout$Tab.select(TabLayout.java:1272) at android.support.design.widget.TabLayout$TabView.performClick(TabLayout.java:1377) at android.view.View$PerformClick.run(View.java:22526) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:158) at android.app.ActivityThread.main(ActivityThread.java:7224) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
오류 로그가 이렇게 뜨네요...
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력