본문 바로가기

open coding

open coding- Dialog Fragment 기본코딩/ Android studio 안드로이드 스튜디오

반응형

//1. 버튼 누르면 dialog fragment 실행

// 2. Dialog Listener : dialog fragment 버튼 누르면 mainActivity의 textview에 글자띄우기

<Fragment class>

package com.example.dialgfragment;

import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;


public class SubFragment extends androidx.fragment.app.DialogFragment {


    public SubFragment() {
        // Required empty public constructor
    }


    @NonNull
    @Override
    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
        //어디다?
        MainActivity activity = (MainActivity) getActivity();

        //Dialog 설정
        AlertDialog.Builder builder = new AlertDialog.Builder(activity);
        builder.setTitle("타이틀 입니다.");
        builder.setMessage("메시지 입니다");

        //listener 적용
        DialogListener listener = new DialogListener();

        builder.setPositiveButton("positive",listener);
        builder.setNeutralButton("neutral",listener);
        builder.setNegativeButton("negative",listener);

        AlertDialog alert = builder.create();

        return alert;
    }//finish


// 버튼 누르면 반응-> listener이용/  fragment내에선 onclick방식 못씀
    class DialogListener implements DialogInterface.OnClickListener{
    @Override
    public void onClick(DialogInterface dialog, int which) {
        //어디다?
        MainActivity activity = (MainActivity)getActivity();

        switch (which){
            case DialogInterface.BUTTON_POSITIVE :
                activity.text1.setText("possitive");
                break;
            case DialogInterface.BUTTON_NEUTRAL :
                activity.text1.setText("neutral");
                break;
            case DialogInterface.BUTTON_NEGATIVE :
                activity.text1.setText("negative");
                break;
             }
        }
    }//finish -> listener 적용 ㄱㄱ


}

<MainActivity class>

package com.example.dialgfragment;

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentManager;

import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

import org.w3c.dom.Text;

public class MainActivity extends AppCompatActivity {
                                //1. 버튼 누르면 dialog fragment 실행
                                // 2. Dialog Listener : dialog fragment 버튼 누르면 mainActivity의 textview에 글자띄우기

   //define variables
    TextView text1;

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

        //connect to xml id
        text1= findViewById(R.id.textView);

    }//finish


//button 누르면 dialog fragment 실행 -> onclick ㄱㄱ
    public void btnMethod(View view){
        //fragment 객체생성 like call constructor
        SubFragment sub = new SubFragment();
        FragmentManager manager = getSupportFragmentManager();
        //fragment dialog 띄우기
        sub.show(manager,"바보야");    //tag는name같은 것으로 암거나.

    }



}