2017-05-26 9 views
0

私はモバイルアプリケーションを作成しています。アンドロイドスタジオのMainActivityクラスにあり、内部のフラグメントクラス内にあるメソッドを呼び出そうとしています。このフラグメントのクラスの中で私は別のクラスと呼ばれるWebViewInterfaceありますjava(android)の内部クラスにアクセスするには?

public class tab2_upgrade extends Fragment { 

    Context context; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.tab2_upgrade, container, false); 
     WebView webView = (WebView) view.findViewById(R.id.webView); 
     webView.loadUrl("file:///android_asset/tab2.html"); 
     webView.getSettings().setJavaScriptEnabled(true); 
     webView.addJavascriptInterface(new WebViewInterface(getActivity()), "Android"); 

     return view; 
    } 

    public class WebViewInterface { 

     WebViewInterface(Context myWebViewFragment) { 
      context = myWebViewFragment; 
     } 

     @JavascriptInterface 
     public void showToast(String message) { 
      Toast.makeText(context, message, Toast.LENGTH_LONG).show(); 
     } 

をしかし、私は私のMainActivityから、その中にメソッドを呼び出すために、この内部クラスにアクセスしようとすると、私はそれはそれを認識していないかのようにエラーを取得する(ことができますが、 )それを見つける:

@Override 
public void onProductPurchased(String productId, TransactionDetails details) { 
    tab2_upgrade tab2 = new tab2_upgrade(); 
    tab2.WebViewInterface tab2WebView = new tab2.WebViewInterface(); 
} 

または

@Override 
public void onProductPurchased(String productId, TransactionDetails details) { 
    tab2_upgrade tab2 = new tab2_upgrade(); 
    tab2.WebViewInterface tab2WebView = tab2.new WebViewInterface(); 
} 

誰かが、私はこのエラーを取得していますなぜ、私はWebViewInterface cをアクセスできるようにこの問題を解決する方法を教えてもらえます私の断片クラスの授業ですか?赤でエラーを表示するには、添付の画像を参照してください。おかげ

enter image description here

enter image description here

enter image description here

+0

引数のないコンストラクタはありません。 – Adrian

答えて

0

エラーがWebViewInterfaceコンストラクタがContext引数を取ることを伝えるされていますが、引数なしでそれを呼び出すようにしようとしています。

BTW、tab2_upgradeおよびWebViewInterfaceは、クラスにとって非常に混乱する名前です。公式ガイドnaming conventionsを参照してください。

+0

適切な種類のコンテキストを取得するにはどうすればよいですか?私のMainActivityクラスのmyWebViewFragmentコンテキスト? – Tanya

+0

@Tanyaコンテキストが必要なときに、 'Fragment'コールで' getActivity() 'を呼び出すのではなく、なぜコンテキストを渡すのでしょうか?私はすべてを再考する必要があると言いますが、私はあなたの特定の質問に集中しようとしています。 –

+0

javascriptインターフェイス用に追加しました。 webView.addJavascriptInterface(new WebViewInterface(getActivity())、 "Android"); – Tanya

関連する問題