amir hossein gholizadeh

مشکل در اجرای button در Dialog Fragment در اندروید //

amir hossein gholizadeh ۱۳۹۷/۰۵/۲۱ برنامه‌نویسی اندروید

یک برنامه معمولی نوشتم که با زدن یک دکمه یک دیالوگ که با فرگمنت پر شده نمایش داده میشه و اطلاعاتی به این دیالوگ  در قالب یک شی از یک کلاس پاس داده میشه و در این دیالوگ edittext و button هایی هست که با زدن یکی از این دکمه ها اطلاعاتی دوباره در قالب شی از همان کلاس به اکتیویتی زیر ارسال میشود

ولی در زمان درخواست برای اجرای دیالوگ (یعنی زدن دکمه ای که دیالوگ رو ایجاد میکنه) برنامه کرش میشه و تو run میشه مشکل از خطی هست که دکمه داخل دیالوگ ایجاد میشه

                  Process: amirhosssein.fragment_parcelable_interfacecallback_test, PID: 8229
                  java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
                      at amirhosssein.fragment_parcelable_interfacecallback_test.AgeFragment.onCreateView(AgeFragment.java:85)

 مشکل اینجاست که حتی اگه این دکمه خالی هم باشه باز این ارور رو میده یعنی اگه برای button داخل دیالوگ هیچ کدی نزنم و قسمت داخل onClick رو در متد setOnClickLisenner خالی بزارم باز هم همین داستان هست.

لطفا راهنمایی کنید

این هم کد های مربوط به دیالوگ اگه لازم شد

import android.content.Context;
import android.os.Bundle;
import android.os.Parcel;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;


public class AgeFragment extends DialogFragment {

    public interface IAgeFragmentLisenner {
        void getdata(PersonBirthday personBirthday);
    }

    private IAgeFragmentLisenner ageFragmentInterface;

    public static AgeFragment newInstance(PersonBirthday personBirthday) {

        Bundle args = new Bundle();
        args.putParcelable("personbirthday", personBirthday);
        AgeFragment fragment = new AgeFragment();
        fragment.setArguments(args);
        return fragment;
    }


    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        if (context instanceof IAgeFragmentLisenner) {
            this.ageFragmentInterface = (IAgeFragmentLisenner) context;
            Log.i("my app", "onAttach: XXXXXXXX");
        } else
            Log.i("my app", "onAttach: XXX");
    }


    public AgeFragment() {
    }


    EditText fragmentbirthyeartext, fragmentnametext;
    Button newdate,finish;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_age, container, false);
        fragmentbirthyeartext = view.findViewById(R.id.fragmentedittext);
        fragmentnametext = view.findViewById(R.id.fragmenteditnametext);
        newdate = view.findViewById(R.id.newdatabutton);
        finish=view.findViewById(R.id.fragmentfinishbutton);


        final PersonBirthday personBirthday = getArguments().getParcelable("personbirthday");
        int bithyear = personBirthday.getBirthyear();
        int age = 1397 - bithyear;
        TextView agetext = view.findViewById(R.id.fragmentagetextview);
        agetext.setVisibility(View.VISIBLE);
        agetext.setText("Your age =" + age);








        newdate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (ageFragmentInterface !=null) {
                    PersonBirthday accountInfo1 = new PersonBirthday();
                    accountInfo1.setBirthyear(Integer.parseInt(fragmentbirthyeartext.getText().toString()));
                    accountInfo1.setName(fragmentnametext.getText().toString());
                    ageFragmentInterface.getdata(accountInfo1);
                }
                dismiss();
            }
        });




//
//        newdate.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//        if (ageFragmentInterface!=null) {
//            PersonBirthday personBirthday1 = new PersonBirthday();
//            personBirthday1.setName(fragmentnametext.getText().toString());
//            personBirthday1.setBirthyear(Integer.parseInt(fragmentbirthyeartext.getText().toString()));
//            ageFragmentInterface.getdata(personBirthday1);
//
//
//            }
//                dismiss();
//            }
//        });

        finish.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dismiss();
            }
        });


        return view;


    }
}





پاسخ‌ها به این تاپیک
سید سجاد حسینی
سید سجاد حسینیبرنامه نویس اندروید
۱۳۹۷/۰۶/۰۷

دوست عزیز بخش import کردن پکیج ها قسمت بالا رو برسی کنید امکان داره که پکیج مورد نظری که شما لازم دارید رو اشتباه import کرده باشه.

خطای logcat همچنین چیزی رو گفته.