ikhatami

صدازدن یک اکتیویتی به عنوان دیالوگ

8 ارسال در این موضوع قرار دارد

سلام

من برنامه ای دارم که  به عنوان مثال در صفحه اصلی،  اکتیویتی A را صدا می زنم و مقادیری برمی گرداند طبیعتا کدهای اکتیویتی A در فایل جاوای متناظر A.java هست اینطور که من برداشت کرده ام برای حالت دیالوگی (منظورم بازشدن صفحه ای روی صفحه اصلی با ترانسپرنت بودن اطراف ) باید اکتیویتی در صفحه اصلی صدا زده شود و تمام کدهای جاوا در صفحه اصلی قرار داشته باشد چطور می توانم بدون تغییر در محل کدهای برنامه همچنان در حالت دیالوگی نیز، کدهای برنامه در فایل A.java کار خود را انجام دهد.

 

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 4 ساعت قبل، ikhatami گفته است :

سلام

من برنامه ای دارم که  به عنوان مثال در صفحه اصلی،  اکتیویتی A را صدا می زنم و مقادیری برمی گرداند طبیعتا کدهای اکتیویتی A در فایل جاوای متناظر A.java هست اینطور که من برداشت کرده ام برای حالت دیالوگی (منظورم بازشدن صفحه ای روی صفحه اصلی با ترانسپرنت بودن اطراف ) باید اکتیویتی در صفحه اصلی صدا زده شود و تمام کدهای جاوا در صفحه اصلی قرار داشته باشد چطور می توانم بدون تغییر در محل کدهای برنامه همچنان در حالت دیالوگی نیز، کدهای برنامه در فایل A.java کار خود را انجام دهد.

 

سلام و درود
 

نه دوست من لازم نیست در صفحه اصلی باشه

هر اکتیویتی میتونه یه alert dialog داشته باشه توی سورسش و نیاز نیست حتما توی اکتیویتی اصلی تعریف بشه

اون قسمت از سوالتون که گفتین بقیه کد اجرا بشه رو متوجه نمیشم لطفا واضح تر مطرح بفرمایید

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام و تشکر

من متوجه نشدم راستش من یک صفحه اصلی (main) دارم و تمام صفحات دیگر می خواهم به صورت دیالوگی در صفحه اصلی به نمایش در بیاید ولی فعالیتها در صفحات دیگر در فایلهای java متناظر وجود دارد اجرا بشه ولی الان باید با صدا زدن هر دیالوگ کدهای جاوای فعالیتهای کلیدهای دیالوگ هم داخل فایل اصلی بیاورم.

نمی دونم تونستم منظورم را بیان کنم ؟؟

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 19 ساعت قبل، ikhatami گفته است :

سلام و تشکر

من متوجه نشدم راستش من یک صفحه اصلی (main) دارم و تمام صفحات دیگر می خواهم به صورت دیالوگی در صفحه اصلی به نمایش در بیاید ولی فعالیتها در صفحات دیگر در فایلهای java متناظر وجود دارد اجرا بشه ولی الان باید با صدا زدن هر دیالوگ کدهای جاوای فعالیتهای کلیدهای دیالوگ هم داخل فایل اصلی بیاورم.

نمی دونم تونستم منظورم را بیان کنم ؟؟

سلام...

به نظر من باید به صورت فرگمنتی اینکار رو انجام بدید...

من به صورت خلاصه میگم امیدوارم کمکتون کنه و صد البته در صورت نیاز بفرمایید تا بیشتر به موضوع بپردازیم...

در اکتیویتی مد نظرتون که قرار است دیالوگ به نمایش در بیاد کد زیر رو پیاده سازی کنید:

public class FirstActivity extends AppCompatActivity {

    private Button show_dialog;

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

        show_dialog = (Button) findViewById(R.id.show_dialog);

        show_dialog.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                showDialog();
            }
        });
    }

    private void showDialog() {
        FragmentManager fragmentManager = getSupportFragmentManager();
        HelloDialogFragment newFragment = new HelloDialogFragment();
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
        transaction.add(android.R.id.content, newFragment).addToBackStack(null).commit();
    }
}

حالا بریم سراغ فرگمنتمون...

اول از همه یک فایل xml بسازید که بتونیم اون رو برای فرگمنت تنظیم کنیم مثلا اینجا ما فرض میکنیم که یک فایل xml داریم به اسم hello_dialog.xml و حالا به سراغ کلاس فرگمنتمون میریم:

public class HelloDialogFragment extends DialogFragment {

    private View root_view;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        root_view = inflater.inflate(R.layout.hello_dialog, container, false);

        return root_view;
    }

    @NonNull
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        Dialog dialog = super.onCreateDialog(savedInstanceState);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        return dialog;
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
    }

}

با این روش به راحتی هر دیالوگی که خواستید رو میتونید در اکتیویتی فراخوانی کنید و سنگین ترین کارها رو با دیالوگتون انجام بدید...

من کدها رو تست نکردم فقط به صورت ذهنی نوشتم امیدوارم جواب بده...

1 کاربر پسند دیده است

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام 

ببخشید نتوانستم به مقصودم برسم شاید منظورم را بد مطرح کرده ام 

من در فرم 1   (form1.xml  form1.java)   با کلیک یک کلید  فرم 2  (form2.xml  form2.java)  به وسیله intent  صدا زده شده و عملیات گرفتن یک تکست باکس  در form2.java  انجام می گردد. بدون استفاده از دیالوگ چطور می توانم فرم 2 را به صورت دیالوگی یعنی بدون زمینه اطراف لایه ها  در روی فرم 1 نمایش دهم ظاهرا اگر فرم 2 را به عنوان دیالوگ صدا بزنم مجبورم کل عملیاتهایی که در form2.java هست را در فرم 1 بیاورم.


 

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام 

مشکل من حل شد حالا چطور بین دیالوگ فرگمنت و اکتیویتی متغیر رد و بدل کنم یعنی یک مقدار برگشتی از دیالوگ فرگمنت به اکتیویتی بفرستم ؟؟؟ 

1 کاربر پسند دیده است

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام و تشکر

مشکل را با bundle حل کردم با تشکر از دوستان

2 کاربر پسند شده است

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در در 1397/10/21, 17:18:31، ikhatami گفته است :

سلام و تشکر

مشکل را با bundle حل کردم با تشکر از دوستان

میتونید به عنوان یه پست آموزشی مشکل و راه حل اون رو برای بقیه دوستان در انجمن درج کنید دوست من

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری