从fragment跳转时出错,安卓报空指针异常
绝地辣鸡 2018-04-08 02:56:47 主要的报错内容为:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
这是我的源代码:
SearchFragment.java
package nnu.net.foreginchinese.ui.fragment;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.JavascriptInterface;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;
import nnu.net.foreginchinese.R;
import nnu.net.foreginchinese.common.Login;
import nnu.net.foreginchinese.ui.activity.LiveSimpleToSimple;
import nnu.net.foreginchinese.ui.activity.LoginActivity;
import nnu.net.foreginchinese.ui.activity.MainActivity;
import nnu.net.foreginchinese.ui.base.BaseFragment;
import static android.view.KeyEvent.KEYCODE_BACK;
/**
* A simple {@link Fragment} subclass.
*/
public class SearchFragment extends BaseFragment {
private WebView mWebview = null;
private ProgressBar mProgresssBar = null;
@Override
protected int getLayoutId() {
return R.layout.fragment_search;
}
@Override
public void onInitViews() {
mWebview = (WebView)findViewById(R.id.wv_use);
mProgresssBar = (ProgressBar)findViewById(R.id.pb);
}
// private SharedPreferences sharedPref;
@SuppressLint("JavascriptInterface")
@Override
public void onInitData() {
// sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
//获取bundle里的参数
Bundle bundle=new Bundle();
bundle=getArguments();
String userId_s=bundle.getString("userId");
int userId=Integer.parseInt(userId_s);
WebSettings webSettings = mWebview.getSettings();
webSettings.setAllowFileAccess(true);
webSettings.setAllowContentAccess(true);
mWebview.setWebViewClient(new WebViewClient());
mWebview.getSettings().setJavaScriptEnabled(true);
webSettings.setSupportZoom(false); //支持缩放,默认为true。是下面那个的前提。
webSettings.setBuiltInZoomControls(false); //设置内置的缩放控件。若为false,则该WebView不可缩放
webSettings.setDisplayZoomControls(false); //隐藏原生的缩放控件
//从这里获取用户的userId,get方式传值
//mWebview.loadUrl("http://222.192.6.54/ForeignChinese1.0/htmlContent/course/index.html?userId="+userId);
//设置与JS交互的权限
webSettings.setJavaScriptEnabled(true);
// 通过addJavascriptInterface()将Java对象映射到JS对象
//参数2:Javascript对象名
//参数1:Java对象名
mWebview.addJavascriptInterface(new SearchFragment(),"star");
// 加载JS代码
// 格式规定为:file:///android_asset/文件名.html
mWebview.loadUrl("http://222.192.6.54/ForeignChinese1.0/htmlContent/course/Lesson_t.html?levelId=1&lessonId=1&userId=8");
mWebview.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (newProgress==100){
mProgresssBar.setVisibility(View.GONE);
}else{
if(View.INVISIBLE==mProgresssBar.getVisibility()){
mProgresssBar.setVisibility(View.VISIBLE);
}
mProgresssBar.setProgress(newProgress);
}
super.onProgressChanged(view,newProgress);
}
});
}
public final static String LOG_TAG ="LiveSimpleToSimple";
@JavascriptInterface
public void JsToAndroid(){
Log.v("a","js调用安卓成功");
Intent intent=new Intent(getActivity(),LoginActivity.class);
// intent.putExtra(LOG_TAG,"123456789");
startActivity(intent);
// startActivity(new Intent(getActivity(),LiveSimpleToSimple.class));
}
@Override
public void onInitListeners() {
}
@Override
public void onClick(View v) {
}
}
下面是我的报错日志:
04-08 02:43:41.152 3141-3491/nnu.net.foreginchinese V/a: js调用安卓成功
04-08 02:43:41.155 3141-3491/nnu.net.foreginchinese W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
04-08 02:43:41.155 3141-3491/nnu.net.foreginchinese W/System.err: at android.content.ComponentName.<init>(ComponentName.java:130)
04-08 02:43:41.155 3141-3491/nnu.net.foreginchinese W/System.err: at android.content.Intent.<init>(Intent.java:5780)
04-08 02:43:41.155 3141-3491/nnu.net.foreginchinese W/System.err: at nnu.net.foreginchinese.ui.fragment.SearchFragment.JsToAndroid(SearchFragment.java:103)
04-08 02:43:41.155 3141-3491/nnu.net.foreginchinese W/System.err: at org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
04-08 02:43:41.155 3141-3491/nnu.net.foreginchinese W/System.err: at org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:7)
04-08 02:43:41.155 3141-3491/nnu.net.foreginchinese W/System.err: at android.os.Handler.dispatchMessage(Handler.java:106)
04-08 02:43:41.155 3141-3491/nnu.net.foreginchinese W/System.err: at android.os.Looper.loop(Looper.java:164)
04-08 02:43:41.155 3141-3491/nnu.net.foreginchinese W/System.err: at android.os.HandlerThread.run(HandlerThread.java:65)
04-08 02:43:41.158 3141-3141/nnu.net.foreginchinese I/chromium: [INFO:CONSOLE(209)] "Uncaught Error: Java exception was raised during method invocation", source: http://222.192.6.54/ForeignChinese1.0/htmlContent/course/Lesson_t.html?levelId=1&lessonId=1&userId=8 (209)