我怎样才能将这两个功能合二为一,并且能够执行两个不可见和不可见的动作。我不想从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);
}
}
}
答案 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并更改其上按钮的可见性