【问题标题】:how to call a fragment from dialog box in android?如何从android中的对话框调用片段?
【发布时间】:2016-04-20 12:03:42
【问题描述】:

我想知道,如何从 android 中的对话框单击操作中调用片段。该对话框在另一个活动中。

下面是对话框部分代码

public static void Bookingconfirm(final Context _context, String title,String strMessage)
{
    final Dialog dialog1 = new Dialog(_context);

    Log.e("Point","1");
    dialog1.setContentView(R.layout.booking_success);
    dialog1.setCanceledOnTouchOutside(true);
    dialog1.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
    dialog1.findViewById(R.id.d_location);
    LinearLayout btnok = (LinearLayout) dialog1.findViewById(R.id.booking_ok);


    btnok.setOnClickListener(new OnClickListener()
    {

        @SuppressLint("NewApi") @Override
        public void onClick(View arg0)
        {   
            Log.e("Point","2"); 

            //i wanted the click to fragment here
            // parent class of fragment Home.java and fragment is booking.java


        }
    });


    dialog1.show();

}

【问题讨论】:

    标签: android dialog fragment


    【解决方案1】:
     Fragment fragment= booking.newInstance();
     Home mainActivity = (Home) context;
            FragmentManager manager = mainActivity.getSupportFragmentManager();
            FragmentTransaction transaction = manager.beginTransaction();
            transaction.replace(R.id.container, fragment, "Frag");
            transaction.commit();
    

    从你的对话框中尝试上面的代码点击监听器...希望这会有所帮助

    【讨论】:

      【解决方案2】:

      试试下面的代码:

      FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
      FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
      fragmentTransaction.replace(R.id.content_frame, new booking());
      fragmentTransaction.commit();
      

      【讨论】:

        【解决方案3】:

        Haroon 和 pradeep 答案不起作用。 您可以像这样将 FragmentManager 传递给您的对话框类:

         import android.support.v4.app.FragmentManager
        
         class TestDialog(val fragmentManager:FragmentManager) {
        
           fun show()
           {
              showFragmentButton.setOnClickListener{
        
               val fragmentTransaction = fragmentManager.beginTransaction()
               val fragment = PurchaseDetail()
                fragmentTransaction.replace(R.id.container, fragment, "cashier_fragment")
                fragmentTransaction.addToBackStack(null)
                fragmentTransaction.commit()
        
                }
           }
        }
        

        在你的片段中:

         TestDialog(getFragmentManager()).show()
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-05-05
          • 2017-06-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-07-31
          • 1970-01-01
          • 2013-07-31
          相关资源
          最近更新 更多