رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

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


پست های پیشنهاد شده

سلام

من برنامه ای دارم که  به عنوان مثال در صفحه اصلی،  اکتیویتی 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   (form1.xml  form1.java)   با کلیک یک کلید  فرم 2  (form2.xml  form2.java)  به وسیله intent  صدا زده شده و عملیات گرفتن یک تکست باکس  در form2.java  انجام می گردد. بدون استفاده از دیالوگ چطور می توانم فرم 2 را به صورت دیالوگی یعنی بدون زمینه اطراف لایه ها  در روی فرم 1 نمایش دهم ظاهرا اگر فرم 2 را به عنوان دیالوگ صدا بزنم مجبورم کل عملیاتهایی که در form2.java هست را در فرم 1 بیاورم.


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

سلام 

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

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

سلام و تشکر

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

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

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

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...