- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
activity_fragment.xml代码:
<?xml version="1.0" encoding="utf-8" ?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragmentContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
CrimeListActivity.java代码
package com.sinory.criminalintent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
public class CrimeListActivity extends SingleFragmentActivity {
@Override
protected Fragment createFragment() {
return new CrimeListFragment();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("CrimeListActivity", "create");
}
}
SingleFragmentActivity.java代码
package com.sinory.criminalintent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
public abstract class SingleFragmentActivity extends FragmentActivity {
protected abstract Fragment createFragment();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fragment);
FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.fragmentContainer);
if (null == fragment) {
fragment = new CrimeListFragment();
fm.beginTransaction().add(R.id.fragmentContainer, fragment).commit();
}
}
}
刚开始学习安卓。为什么 Fragment fragment = fm.findFragmentById(R.id.fragmentContainer) 为空?请帮助我。
最佳答案
首先,您不需要检查 fragment 是否为空,因为当一个 Activity 销毁时,所有 fragment 也将被销毁。所以在 onCreate Activity 中不会有 fragment ,您需要在每次 Activity 重新创建时添加它。
其次不要使用 findFragmentById。只有在 xml 文件中定义 fragment 时才使用此方法。现在您已经动态添加了您的 fragment ,您需要指定一个字符串标记,然后使用该标记来查找该 fragment 。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fragment);
FragmentManager fm = getSupportFragmentManager();
fm.beginTransaction().add(R.id.fragmentContainer, fragment,"TagName").commit();
}
如果您需要找到您的 fragment ,只需使用此代码
Fragment fragment = fm.findFragmentByTag("TagName");
2019 年 1 月 9 日更新
截至 2018 年,您可以简单地使用 Google 导航库在应用程序的页面( fragment )之间导航。它将处理所有事务并使导航变得更加容易和清晰。在这里查看 https://developer.android.com/topic/libraries/architecture/navigation/
关于android - FragmentManager findFragmentById 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23369621/
我有一个管理 fragment 列表的 Activity 。其中之一是 ListFragment,当 Activity 试图在 Create() 期间找到它时,我得到一个 Null 异常。 Cause
我在 mainActivity 的导航模式下使用操作栏。不同的选项卡有不同的布局,在其中一个选项卡上,我嵌入了一个内部有 MapFragment 的布局。使用以下代码,应用程序运行良好,mapFrag
我创建了一个 fragment 来显示我的回收站 View 。所以我使用方法 findFragmentById() 来查找我的 xml 文件。问题是每次我旋转屏幕时,它都会在另一个之上创建一个回收器
我在访问 map fragment 时遇到问题。getFragmentManager().findFragmentById(R.id.map)) 总是返回 null。我不知道为什么。有什么问题? 谢谢
我遇到了一个疯狂的小“错误”,或者我只是做错了什么。我正在尝试获取对 fragment 内 fragment 的引用。所以我们有 ParentFragment,它是 MainActivity 的子项。
我在 xml 布局中为我的 fragment 定义一个 ID: 当我使用 fragment 的 id 调用 findFragmentById() 时,它返回 null。 activity_main.xml MainActi
我有带 viewpager 的应用程序。当我单击第一个 fragment 上的按钮时,我需要调用其他 fragment 方法。 这是我的邮件 Activity view plainprint? Not
我刚刚将一个 Android 项目迁移到 gradle。迁移前一切正常。我有相同的布局文件。我的仓库在这里: https://github.com/jackygrahamez/MayDay/tree/
我试图在我的应用程序中显示 GoogleMap,但我在这项任务开始时遇到了问题。线路: SupportMapFragment mapFrag = (SupportMapFragment) getAct
我试图在 fragment 之间传递数据,但我无法访问我的 fragment 以从中获取元素。我有多个 fragment 显示在 main.xml 的 FrameLayout 中,其 id 是“内容”
我刚刚将一个旧的 Android 项目从 Eclipse 切换到 Android Studio,在这个过程中我从旧的支持库版本 19.0.1 进行了更新。至 22.2.0 .在此之后,我在以前的工作代
activity_fragment.xml代码: CrimeListActivity.java代码 package com.sinory.criminalintent; import androi
以下行不编译: var mapFragment = FragmentManager.FindFragmentById(Resource.Id.map); Error CS0120 An object
您好,我有包含更多 fragment 的 viewpager。在第三个 View 上,我想放 map 。 我的 map 布局。(fragment_poloha ↓) 我有这个类来设置网页
我正在尝试在 android 中实现 fragment 通信,就像 android 指南 http://developer.android.com/guide/components/fragments
我尝试通过以下方式获取特定片段: RohwareFragmentMatlist fragment = (RohwareFragmentMatlist)getFragmentManager().f
我正在尝试获取 fragment 的实例来调用其中的某些函数。不同寻常的是,我从 getFragmentManager().findFragmentById(id) 函数中获取 null 。但是,在另
我正在尝试使用本指南构建 Facebook 登录:https://developers.facebook.com/docs/android/scrumptious/authenticate ,并且我在
我正在尝试使用 findFragmentById() 获取 fragment 引用,但它总是返回空对象。我使用了 FragmentPagerAdapter 并附加了一个 OnPageChangeLis
我是一名优秀的程序员,十分优秀!