【发布时间】:2017-06-07 16:39:03
【问题描述】:
首先,我在这里阅读了所有内容。 https://developer.android.com/guide/components/fragments.html
我有一个活动,我想水平划分屏幕并添加 2 个片段。我知道如何在 XML 上添加片段,但我不希望这样。我想在 Java 上添加它们。
所以问题是 FragmentManager 不起作用,除非我的活动扩展了 Fragment。我应该在活动上这样做还是应该在其中一个片段上添加片段事务方法?
如果我将我的活动扩展到 Fragment,它是否也会变成一个 Fragment?
如果我将 FragmentManager 和 FragmentTransaction 放在其中一个 Fragment 上,我该如何与活动建立连接?
这是我希望我的片段显示在上面的活动
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class ConversionActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_conversion);
NumpadFragment fragment = new NumpadFragment();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.numpad_layout,fragment);
fragmentTransaction.commit();
}
}
这是其中一个片段
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class NumpadFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_numpad,container,false);
}
}
【问题讨论】:
-
So the problem is FragmentManager doesnt work unless my activity extends Fragment是什么意思? -
要使用代码添加到 Fragment,只需在
activity_conversion.xml中创建两个容器布局,然后使用fragmentTransaction.add(R.id.<first_layout_id>,fragment);和fragmentTransaction.add(R.id.<second_layout_id>,fragment);添加两个 Fragment -
您想使用
getSupportFragmentManager()而不是getFragmentManager()。 -
当我将鼠标悬停在 FragmentManager 上时。我收到不兼容的类型错误。它说我需要导入 android.support.v4.app.FragmentManager 而不是 android.app.FragmentManager。但我有第一个。如果我扩展到 Fragment,该错误就会消失。
-
@MikeM。使用时应用程序崩溃。
标签: java android android-fragments fragmentmanager