2017-07-02 3 views
1

Meine Anwendung verfügt über Registerkarten und eine Registerkarte enthält ein Fragment. Im Fragment befindet sich eine Kartenansicht. Ich möchte, wenn ich auf die Kartenansicht klicke, möchte ich das Webview wie this arbeiten, aber ich bekomme einen Fehler. Mein webview.xmlVerwenden von Webview in einem Adapter

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 


    <WebView 
     android:id="@+id/mywebview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
</LinearLayout> 

Meine Daten Adapter

public static class ContentViewHolder extends RecyclerView.ViewHolder { 
    protected TextView title; 
    protected TextView description; 
    protected TextView date; 
    protected ImageView imgSrc; 
    protected String urlS; 
    protected int itemPos; 
    WebView mWebView; 
    AdvancedWebView vw; 
    public ContentViewHolder(View v) { 
     super(v); 
     title = (TextView) v.findViewById(R.id.title); 
     description = (TextView) v.findViewById(R.id.descript); 
     date = (TextView) v.findViewById(R.id.date); 
     imgSrc=(ImageView)v.findViewById(R.id.thumbnail); 
     v.setOnClickListener(new View.OnClickListener() { 
      @Override public void onClick(View v) { 
       /*Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlS)); 
       v.getContext().startActivity(myIntent);*/ 
       //there is a problem 
       mWebView =(WebView)v.findViewById(R.id.mywebview); 
       mWebView.loadUrl("http://www.google.com"); 


      } 
     }); 
    } 

} 

Der Fehler

E/AndroidRuntime: FATAL EXCEPTION: main 
        Process: com.example.oguz.topluluk, PID: 3449 
        java.lang.NullPointerException 
         at com.example.oguz.topluluk.WebDataAdapter$ContentViewHolder$1.onClick(WebDataAdapter.java:113) 
         at android.view.View.performClick(View.java:4438) 
         at android.view.View$PerformClick.run(View.java:18422) 
         at android.os.Handler.handleCallback(Handler.java:733) 
         at android.os.Handler.dispatchMessage(Handler.java:95) 
         at android.os.Looper.loop(Looper.java:136) 
         at android.app.ActivityThread.main(ActivityThread.java:5017) 
         at java.lang.reflect.Method.invokeNative(Native Method) 
         at java.lang.reflect.Method.invoke(Method.java:515) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
         at dalvik.system.NativeStart.main(Native Method) 

Wie kann ich es beheben? Ich bin neu bei Android. Kannst du mich führen?

Antwort

1

Ich habe das Problem behoben. Ich sehe, dass ich das Webview nicht gestartet habe, vielleicht könnte es einen anderen Grund geben, aus diesem Grund habe ich den Fehler bekommen. Nach ein paar Änderungen, der Endzustand des Codes so;

@Override 
public void onBindViewHolder(final ContentViewHolder contentViewHolder, int i) { 
    contentViewHolder.theCard.setOnClickListener(new View.OnClickListener() { 
     @Override public void onClick(View v) { 

      /*...*/ 

      WebView mWebView =new WebView(context); 
      mWebView.getSettings().setJavaScriptEnabled(true); 
      mWebView.loadUrl(wb.link); 


     } 
    }); 

} 

Definition des Kontextes, in einer anderen Funktion,

private Context context; 
    private List<WebDataInfo> dataList; 
    public WebDataAdapter(Context context, List<WebDataInfo> dataList) { 
     this.context=context; 
     this.dataList = dataList; 
} 

Ich hoffe, das hilft.

Verwandte Themen