如何在Java android中结合两个函数

时间:2016-07-21 13:25:36

标签: android function visibility

我怎样才能将这两个功能合二为一,并且能够执行两个不可见和不可见的动作。我不想从buttonInVisible方法获取if语句,只需在buttonVisible中输入。

这是代码

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);
    }
}

片段

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);
        }
    }
}

2 个答案:

答案 0 :(得分:1)

public void changeButtonVisibilityState() {
     button.setVisibility(button.getVisibility() == View.INVISIBLE ? View.VISIBLE : View.INVISIBLE);
}

答案 1 :(得分:0)

自方法

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

在MainActivity(包含片段)上是公共的,您可以在需要以下内容时简单地调用片段:

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

这将调用MainActivity并更改其上按钮的可见性