L'utilisation de getActivity

Tout d'abord désolé si ce post peut sembler un doublon, mais je suis très nouveau pour Android programmation et l'affichage de cette question que lorsque je ne suis toujours pas en mesure d'obtenir une réponse satisfaisante pour l'utilisation de getActivity.

Théoriquement je comprends l'utilisation de getActivity() de la plusieurs posts ici mais je ne sais pas comment c'est de travailler dans mon code.

J'ai une classe MainActivity à partir de laquelle je suis entrain de créer un dialogue onclick d'une case à cocher.
J'ai une autre classe TaxDialog où le dialogue est mis en œuvre. Cliquez sur Oui/Pas de boutons, je suis de l'appel de méthodes à définir dans la classe MainActivity.
Ci-dessous les codes:

MainActivty

    import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;



public class MainActivity extends ActionBarActivity implements View.OnClickListener, View.OnFocusChangeListener {

//onCheck of checkbox showNoticeDialog is called

    public void showNoticeDialog() {
        //Create an instance of the dialog fragment and show it
        Log.i("MyActivity", "Inside showNoticeDialog");
        DialogFragment dialog = new TaxDialog();
        Bundle args = new Bundle();
        args.putString("title", "Test");
        args.putString("message", "Test Message");
        dialog.setArguments(args);

        dialog.show(getSupportFragmentManager(), "dialog");


    }
   public void doPositiveClick(){
       Log.i("MyActivity", "Inside +ve");
   }
    public void doNegativeClick(){
        Log.i("MyActivity", "Inside -ve");
    }

}

TaxDialog

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.util.Log;

public class TaxDialog extends DialogFragment {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        Bundle args = getArguments();

        String title = args.getString("title");

        String message = args.getString("message");
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle(title);

        builder.setMessage(message);
        builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, null);
                Log.i("MyActivity", "Expected fault area.");
                ((MainActivity) getActivity()).doPositiveClick();
            }
        });
        builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                ((MainActivity) getActivity()).doNegativeClick();
            }
        });
        builder.create();

        return builder.create();
    }

}

Ici, je veux comprendre comment les dessous de la ligne des œuvres

((MainActivity) getActivity()).doPositiveClick();

et aussi, merci de me faire connaître d'autres façons de faire la même chose (quelque chose comme MainActivity.c'.getActivity() ou quelque chose d'autre).

Merci beaucoup.

MODIFIER

Merci à tous. Probablement je l'ai encadrée correctement la question. Mon seul doute est la façon dont getActivity() retourne la référence à l'Activité. Maintenant, je comprends.

  • Lorsque vous utilisez des fragments c'est la seule façon de les mettre en contexte. Comme ci-dessus, vous utilisez DialogFragment et dans OnClickListener il est nécessaire de contexte.
  • Les meilleurs conseils et je suis désolé d'être grossier serait, obtenir un bon Java livre et de le lire avant de sauter dans Android, de toute façon juste pour Répondre à votre question, cette ligne de code est d'obtenir une référence de l'activité en appelant getActivity, jette à MainActivity et d'appeler la doPositive méthode de...
InformationsquelleAutor user3275095 | 2014-02-11