- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法理解为什么 findFragmentByTag() 在我的代码中返回 null。我在我的 fragment onCreate() 上设置了 setRetainInstance(true) 并且我正在使用 getSupportFragmentManager().findFragmentByTag() 因为它是 SherlockFragmentActivity。
这是我的 Activity 代码:
public class TedActivity extends SherlockFragmentActivity implements
TabListener, Constants {
private Tab tab;
private ActionBar actionBar;
private int currentTab;
MyTedFragment currentFrag;
private MyTedFragment previousFrag;
private static int count = 1;
private static final String TAG = TedActivity.class.getName();
private static final String FRAGMENT_PREFIX = "FRAGMENT";
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
currentTab = tab.getPosition();
currentFrag = (MyTedFragment) getSupportFragmentManager()
.findFragmentByTag(FRAGMENT_PREFIX + (currentTab + 1));
if (previousFrag != null) {
ft.hide(previousFrag);
}
if (currentFrag == null) {
Log.d(TAG, FRAGMENT_PREFIX + (currentTab + 1) + " = null");
} else {
Log.d(TAG, FRAGMENT_PREFIX + (currentTab + 1) + " != null");
ft.show(currentFrag);
}
previousFrag = currentFrag;
}
/**
* @see android.app.Activity#onCreate(android.os.Bundle)
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// Create first Tab
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
MyTedFragment frag = new MyTedFragment();
ft.add(android.R.id.content, frag, FRAGMENT_PREFIX + count);
ft.commit();
tab = actionBar.newTab().setTabListener(this);
tab.setText("Untitled" + count);
actionBar.addTab(tab);
count++;
if (savedInstanceState != null) {
actionBar.setSelectedNavigationItem(savedInstanceState.getInt(
"tab", 0));
}
}
public boolean onCreateOptionsMenu(Menu menu) {
addMenuItem(menu, MENU_ID_NEW, R.string.menu_new,
R.drawable.ic_action_new).setShowAsAction(
MenuItem.SHOW_AS_ACTION_ALWAYS);
;
return true;
addMenuItem(menu, MENU_ID_OPEN, R.string.menu_open,
R.drawable.ic_action_open).setShowAsAction(
MenuItem.SHOW_AS_ACTION_IF_ROOM);
;
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("tab", getSupportActionBar()
.getSelectedNavigationIndex());
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
currentFrag = (MyTedFragment) getSupportFragmentManager()
.findFragmentByTag(FRAGMENT_PREFIX + count);
if (currentFrag != null/* && !currentFrag.isDetached() */) {
currentFrag.mWarnedShouldQuit = false;
switch (item.getItemId()) {
case MENU_ID_NEW:
FragmentTransaction ft = getSupportFragmentManager()
.beginTransaction();
MyTedFragment frag = new MyTedFragment();
ft.add(android.R.id.content, frag, FRAGMENT_PREFIX + count);
ft.commit();
tab = actionBar.newTab().setTabListener(this);
tab.setText("Untitled" + count);
actionBar.addTab(tab);
actionBar.setSelectedNavigationItem(actionBar
.getNavigationItemCount() - 1);
count++;
// TODO mFragment.newContent();
return true;
case MENU_ID_OPEN:
currentFrag.openFile();
break;
}
}
return super.onOptionsItemSelected(item);
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
这是我的 fragment 代码:
public class MyTedFragment extends SherlockFragment implements OnClickListener, KeyListener {
private EditText mEditor;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
// editor
mEditor = (EditText) getActivity().findViewById(R.id.editor);
mEditor.addTextChangedListener(this);
mEditor.updateFromSettings();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.layout_editor, null);
}
....
....
}
最佳答案
可能是因为您正在使用 ft.attach(frag);
重新附加 fragment 。查看文档:http://developer.android.com/reference/android/app/FragmentTransaction.html#attach(android.app.Fragment)
关于java - findFragmentByTag() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19349914/
我有一个问题 findFragmentByTag 总是返回 null;所以我想解决这个问题。 我在支持 v4 上尝试了相同的操作,但这总是返回 null 主要 Activity :` public c
Android Studio 3.2 Canary 2 Build #AI-173.4591728, built on February 8, 2018 JRE: 1.8.0_152-release-
我只是一个android开发的初学者,最近我在developer.android.com上开始了Android教程。一切看起来都很好,直到现在。我正在做这门类(class)http://develop
我无法理解为什么 findFragmentByTag() 在我的代码中返回 null。我在我的 fragment onCreate() 上设置了 setRetainInstance(true) 并且我
我有一个 fragment 开始另一个 fragment 。我需要从第二个访问第一个 fragment 的方法。但是我遇到了一个奇怪的错误。 有没有人有解决这个问题的想法? 首先: public cl
我哪里错了。我只想检查具有给定 ProductId 的 fragment 是否已在 BackStack 中可用; 如果是,则不要添加新 fragment ,否则将当前 fragment 添加到后台堆栈
我创建了一个 fragment 来显示我的回收站 View 。所以我使用方法 findFragmentById() 来查找我的 xml 文件。问题是每次我旋转屏幕时,它都会在另一个之上创建一个回收器
我正在尝试通过获取容器中的当前 fragment 并调用其方法来更新我的 UI。我的布局如下所示: 我像这样在 Fragments(android
当 FragmentManager.findFragmentByTag("tag") 返回 null 时,我发现了一种特殊情况。 我有一种直觉,这与时间有关? 我有一个包含以下回调的网络库: onSt
我正在使用 Android 支持库 (v4) 和 ActionBarSherlock。我正在尝试以编程方式关闭进度对话框。我编写了一个小型实用程序类来帮助进行对话框管理。 对话框从 AsyncTask
我有一个父 FragmentActivity 和三个子 Tab Fragment。当在 FragmentActivity 上按下“提交”按钮时,我想对不同选项卡 fragment 中所有 EditTe
我环顾四周,发现了几个主题相似的问题,但对我的情况没有任何帮助。我正在尝试使用 getSupportFragmentManager().findFragmentByTag(TAG) 访问现有的 Act
在我的应用程序中,我有一个主要 Activity 和几个 fragment 。当用户单击后退按钮时, fragment 一个接一个地弹出。我想确定当前在返回堆栈中的 fragment 。所以用来通过
getFragmentManager().beginTransaction() .replace(R.id.graph_fragment_holder, new Gra
我想抑制一个 FindBugs 警告,该警告看到转换了一个通过 findFragmentByTag(String) 获得的 Fragment。这是当前代码: 我正在关注 htt
我正在尝试从我的 fragmentTabHost 中检索 fragment : private void initView() { FragmentTabHost mTabHost = (Fr
我想从其父 Activity 中调用 fragment 方法。为此,我想要 fragment 对象。 父 Activity 在框架布局中有这样的 fragment :
更重要的是,在 onCreate/onCreateView 中,我已经调用 FragmentManager.findFragmentByTag() 来查找我的 fragment 的任何现有实例,它似乎
由于我在 Android findFragmentByTag() 中进行了 null 检查,代码检查建议我添加 Objects.requireNonNull() 方法。当我应用此检查时,代码检查不再发
我已经通过 DialogFragment 创建了一个进度对话框,为此我使用这篇文章作为我的 DialogFragment 的基础:https://gist.github.com/daichan4649
我是一名优秀的程序员,十分优秀!