如何在Activity中连接片段?

时间:2017-11-23 08:15:48

标签: android android-fragments

我想在Click按钮事件时转到Fragment。但我有相关问题。

这是我的代码。

@OnClick(R.id.Main_Bottom_Bar_Summary)
public void onBottomBarClicked()
{
    loadFragment(new AddItemFragment());
}
private void loadFragment(android.support.v4.app.Fragment fragment) {
    FragmentManager fm = getFragmentManager();
    FragmentTransaction fragmentTransaction = fm.beginTransaction();
    fragmentTransaction.replace(R.id.frameLayout, fragment);
    fragmentTransaction.commit(); // save the changes
}

和活跃的顶部。导入文件。

 import android.app.Fragment;
 import android.app.FragmentManager;
 import android.app.FragmentTransaction;

和我的碎片:

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.and.dmt.R;

public class AddItemFragment extends Fragment 
{
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_additemdialog,container, false);}
}

我可以看到这个问题。

enter image description here

这个问题是什么?我该如何解决?

如果我更改loadFragment参数" Fragment" to" android.support.v4.app.Fragment"

然后出现此问题。

enter image description here

3 个答案:

答案 0 :(得分:2)

loadFragment()android.app.Fragment为参数,而您的片段扩展android.support.v4.app.Fragment

更改loadFragment()的参数以采用v4片段并使用getSupportFragmentManager()

答案 1 :(得分:1)

如果您使用支持片段,请尝试以下代码:

 private void loadFragment(android.support.v4.app.Fragment fragment) {
        android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
        fragmentTransaction.replace(R.id.frameLayout, fragment);
        fragmentTransaction.commit(); // save the changes
    }

答案 2 :(得分:0)

将以下代码添加到调用Activity。

addFragment(R.id.fragment_container, NewFragment.newInstance());

并在片段类中添加以下方法,该方法将返回该片段的新实例。

public static NewFragment newInstance() {
        return new NewFragment();
}