2016-07-21 11 views
-2

Wie kann ich diese beiden Funktionen in nur einem kombinieren und in der Lage sein, zwei Aktionen unsichtbar und unsichtbar durchzuführen. Ich möchte nicht nur die if-Anweisung aus der buttonInVisible-Methode abrufen und einfach in die buttonVisible-Variable einfügen. HierSo kombinieren Sie zwei Funktionen in Java android

ist der Code

MainActivity

import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentTransaction; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class MainActivity extends FragmentActivity { 

    private WebViewFragment mWebViewFragment; 
    public TextView textView; 
    public Button buttons; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     buttons = (Button) findViewById(R.id.button); 
     buttons.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       onBackPressed(); 
      } 
     }); 
     textView = (TextView) findViewById(R.id.textViewId); 
     FragmentManager fragmentManager = getSupportFragmentManager(); 
     FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 

     mWebViewFragment = new WebViewFragment(); 
     fragmentTransaction.replace(R.id.mainFragment, mWebViewFragment); 
     fragmentTransaction.commit(); 
    } 

    @Override 
    public void onBackPressed() { 

     if(mWebViewFragment != null && mWebViewFragment.canGoBack()) { 
      mWebViewFragment.goBack(); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

    public void setTitle(String title) { 
     if(textView != null){ 
      textView.setText(title); 
     } 
    } 

    public void buttonVisible(int visibility) { 
     if(buttons != null){ 
      buttons.setVisibility(visibility); 
     } 
    } 

    @Override 
    protected void onStart() { 
     super.onStart(); 
     setVisible(true); 
    } 
} 

Fragment

import android.app.Activity; 
import android.graphics.Bitmap; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.webkit.WebChromeClient; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class WebViewFragment extends Fragment { 

    private WebView mWebView; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_main, container, false); 
     mWebView = (WebView) view.findViewById(R.id.webView); 
     WebSettings webSettings = mWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     mWebView.loadUrl("https://www.google.co.uk/"); 
     mWebView.setWebViewClient(new WebViewClient() { 
      @Override 
      public void onPageStarted(WebView view, String url, Bitmap favicon) { 
       super.onPageStarted(view, url, favicon); 
       Log.v("WebView has started", url); 
      } 

      @Override 
      public void onPageFinished(WebView view, String url) { 
       String title = mWebView.getTitle(); 
       Log.v(getClass().getName(), "Title=" + title); 
       /**if(mWebView.canGoBack()) { 
        buttonVisible(); 
       } else { 
        buttonInVisible(); 
       }**/ 
      } 
     }); 

     mWebView.setWebChromeClient(new WebChromeClient() { 
      @Override 
      public void onReceivedTitle(WebView view, String title) { 
       super.onReceivedTitle(view, title); 
        setTitle(title); 
       Log.v(getClass().getName(), "Received Title" + title); 
      } 
     }); 
     return view; 
    } 

    public boolean canGoBack() { 
     return mWebView.canGoBack(); 
    } 

    public void goBack() { 
     mWebView.goBack(); 
    } 

    public void setTitle(String title) { 

     if (title != null && title.length() > 0) { 
      Activity activity = getActivity(); 
      if(activity != null && activity instanceof MainActivity){ 
       ((MainActivity) activity).setTitle(title); 
      } 
     } 
    } 

    public void SetVibility() { 
     Activity activity = getActivity(); 
     if(activity != null && activity instanceof MainActivity) { 
      ((MainActivity) activity).buttonVisible(View.VISIBLE); 
     } 
    } 

    public void buttonInVisible() { 
     Activity activity = getActivity(); 
     if(activity != null && activity instanceof MainActivity){ 
      ((MainActivity) activity).buttonVisible(View.INVISIBLE); 
     } 
    } 
} 
+0

überprüfen Sie die Sichtbarkeit des Objekts, auf dem Sie diese Vorgänge ausführen möchten, wenn dieses Objekt sichtbar ist, machen Sie es unsichtbar und wenn es unsichtbar ist, machen Sie es sichtbar. –

+0

Entschuldigung posted den falschen Code, nur bearbeitet es jetzt – user6574269

+0

Hier können Sie überprüfen, die Sichtbarkeit der Schaltfläche 'myButton.getVisibility() == View.VISIBLE' verwenden Sie dies in Ihrem Code. –

Antwort

0

Da das Verfahren

public void buttonVisible(int visibility) { 
    if(buttons != null){ 
     buttons.setVisibility(visibility); 
    } 
} 

Ist Öffentlichkeit über die MainActivity (das das Fragment enthält), können Sie einfach auf Ihrem Fragment aufrufen können, wenn Sie das folgende wollen:

((MainActivity) getActivity).buttonVisible(View.VISIBLE) 

Dies wird die MainActivity nennen und die Sichtbarkeit der Taste auf sie

ändern
1
public void changeButtonVisibilityState() { 
    button.setVisibility(button.getVisibility() == View.INVISIBLE ? View.VISIBLE : View.INVISIBLE); 
} 
+0

Ich habe keine Schaltfläche in meinem Fragment, IAM Zugriff auf die Schaltfläche bilden die MainActivity-Klasse. also würde das nicht funktionieren, weil ich keinen Knopf in meinem Fragment habe. – user6574269

+0

@ user6574269 Ich schreibe nicht Code für Sie, ich habe nur gezeigt, wie Sie archivieren können, was Sie brauchen. Es ist wirklich nicht so schwer, 'button' durch' ((MainActivity) getActivity) .buttonVisible' zu ​​ersetzen. – Divers