Comment combiner deux fonctions ensemble dans Java Android
sk123
Comment puis-je être capable de combiner ces deux fonctions en une seule et de pouvoir effectuer deux actions Invisible et invisible. Je ne veux pas simplement obtenir la déclaration if de la méthode buttonInVisible et simplement la mettre dans la commande buttonVisible.
Voici le code
Activité principale
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);
}
}
}
Ricardo Vieira
Depuis la méthode
public void buttonVisible(int visibility) {
if(buttons != null){
buttons.setVisibility(visibility);
}
}
Est public sur MainActivity (qui contient le fragment), vous pouvez simplement invoquer sur votre fragment lorsque vous souhaitez ce qui suit:
((MainActivity) getActivity).buttonVisible(View.VISIBLE)
Cela appellera MainActivity et changera la visibilité du bouton dessus