2017-08-29 78 views
0

开始片段尝试使用此代码如何从适配器类

public void startFragment(Context context, int position) { 
    Activity activity = (Activity) context; 
    android.app.FragmentManager manager = activity.getFragmentManager(); 
    android.app.FragmentTransaction fragmentTransaction = manager.beginTransaction(); 
    DepartmentDetails departmentDetails = new DepartmentDetails(); 

    Bundle bundle = new Bundle(); 
    bundle.putString("id", departmentList.get(position).id); 
    bundle.putSerializable("details", departmentList); 
    departmentDetails.setArguments(bundle); 

    fragmentTransaction.add(R.id.container, departmentDetails); 
    fragmentTransaction.commit(); 
} 

开始从适配器类片段,但它fragmentTransaction.add(R.id.container, departmentDetails);

强调红色和在执行它表明

Error:(90, 28) error: no suitable method found for add(int,DepartmentDetails) 
method FragmentTransaction.add(Fragment,String) is not applicable 
(argument mismatch; int cannot be converted to Fragment) 
method FragmentTransaction.add(int,Fragment) is not applicable 
(argument mismatch; DepartmentDetails cannot be converted to Fragment) 
Error:Execution failed for task ':app:compileDebugJavaWithJavac'. 
> Compilation failed; see the compiler error output for details. 

这里是我正在使用的DepartmentDetails片段代码

public class DepartmentDetails extends Fragment implements CallBacks{ 

    ImageView ivProfile; 
    TextView tvName, tvBasicInfo, tvDescription; 
    String id, dean; 
    Departments details; 
    ArrayList<String> faculty, programs; 

    RequestParams params; 
    MyHttp myHttp; 
    String url; 

    public DepartmentDetails() { 
     // Required empty public constructor 
    } 
+1

什么是DepartmentDetails片段或SupportFragment? –

+0

其简单片段 – Asad

+1

请更新答案并添加DepartmentDetails片段 –

回答

1

您可以使用以下代码从适配器类打开片段;

Fragment fragment = new MyFragment(); 
    FragmentManager fm = context.getSupportFragmentManager(); 
    FragmentTransaction ft = fm.beginTransaction(); 
    ft.replace(R.id.content_frame, fragment); 
    ft.commit(); 
1

添加在您的DepartmentDetails片段类

import android.support.v4.app.Fragment ; 

,而不是

import android.app.Fragment 
0

请下面的代码试试。

Fragment fragment = new MyFragment(); 
    FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
    FragmentTransaction ft = fm.beginTransaction(); 
    ft.replace(R.id.content_frame, fragment); 
    ft.commit(); 
+0

getSupportFragmentManager在此处不显示 – Asad

+0

检查我更新的答案 –

+0

可能是现在如果'getSupportFragmentManager'没有出现,则将其设置为'context.getSUpportFragmentManager' –