从扩展View类的调用中显示FragmmentDialog

vli*_*o20 1 android fragment android-dialogfragment

我有一个被调用的活动,MainPage它会延伸SherlockFragmentActivity.此活动有标签,每个标签显示不同的片段.其中一个片段显示一个SaleRow视图,该视图是一个自定义视图(扩展RelativeLayout该类的类).我也有SaleDialog课程延伸DialogFragment.我想要做的是从SaleRow视图类中显示SaleDialog .我试着使用这段代码:

public class SaleRow extends RelativeLayout 
{   
    public SaleRow(Context context) 
    {
        super(context);

        ...

        this.setOnClickListener(new OnClickListener() 
        {
            @Override
            public void onClick(View view) 
            {
            FragmentManager fm = getFragmentManager(); //compilation error here for getFragmentManager The method getFragmentManager() is undefined for the type new View.OnClickListener()
                SaleDialog testDialog = new SaleDialog();
                testDialog.setRetainInstance(true);
                testDialog.show(fm, "fragment_name");
            }

        });
Run Code Online (Sandbox Code Playgroud)

我已经找到了解决方案但找不到相关的东西.

Thaks

cho*_*hop 6

尝试保持对context对象的引用,转换它然后调用getSupportFragmentManager它:

public class SaleRow extends RelativeLayout 
{
    private Context mContext;
    public SaleRow(Context context) 
    {
        super(context);
        mContext = context;
        this.setOnClickListener(new OnClickListener() 
        {
            @Override
            public void onClick(View view) 
            {
                try{
                    FragmentManager fm = ((FragmentActivity) mContext).getSupportFragmentManager();
                } catch (ClassCastException e) {
                   Log.d(TAG, "Can't get fragment manager frmom context");
                }
                SaleDialog testDialog = new SaleDialog();
                testDialog.setRetainInstance(true);
                testDialog.show(fm, "fragment_name");
            }

        });
    }
}
Run Code Online (Sandbox Code Playgroud)