- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
这是我关于同一问题的第 2 篇文章,我仍在等待有人指导我。我面临的问题可能非常简单,简而言之,我有这个 ListFragment
填充调用 web 服务的列表,这工作正常。当用户选择任何项目时,我替换另一个 fragment 并将这个 fragment 添加到 BackStack
问题从这里开始,它弹出 ListFragment
但它始终为空或空白。但是我已经以各种可能的方式检查了日志并发现数据在那里,由于某种原因列表保持空白。请有人帮助我...
在 MainActivity 中,我使用 DrawerItemCustomAdapter
,这就是我替换 fragment 的方式
private void selectItem(int position) {
android.support.v4.app.Fragment fragment = null;
switch (position) {
case 0:
{
fragment = new EventFragment();
}
break;
case 1:
fragment = new ScheduleFragment();
break;
case 2:
fragment = new NewsFragment();
break;
case 3:
fragment = new TeamFragment();
break;
case 4:
fragment = new VenueFragment();
break;
case 5:
fragment = new NewsFragment();
break;
default:
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(mNavigationDrawerItemTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
}
在 EventFragment 中,我使用 FragmentStatePagerAdapter
创建 ViewPager
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.event_fragment, container, false);
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
viewpager = (ViewPager)rootView.findViewById(R.id.pager);
viewpager.setAdapter(new MyAdapter(fragmentManager));
return rootView;
}
在 MyAdapter 类中
class MyAdapter extends FragmentStatePagerAdapter {
FragmentManager fragmentManager;
public MyAdapter(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
fragmentManager = fm;
}
@Override
public Fragment getItem(int i) {
Fragment fragment = null;
if(i == 0)
{
fragment = new LiveFragment();
}
if(i == 1)
{
fragment = new UpcomingFragment();
}
if(i == 2)
{
fragment = new CompletedFragment();
}
return fragment;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
if(position == 0)
{
return "Live";
}
if(position == 1)
{
return "Up-Coming";
}
if(position == 2)
{
return "Completed";
}
return null;
}
}
三个tab都是ListFragment我们选第一个
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
LiveMatchList = new ArrayList<HashMap<String, Object>>();
adapter = null;
Log.d("LiveMatchList setUserVisibleHint","setUserVisibleHint");
new LoadUpcomingMatchList().execute();
}
}
我的 LoadUpcomingMatchList 类扩展了 AsyncTask,在 onPreExecute 和 doInBackground 之后我像这样设置适配器
protected void onPostExecute(String file_url) {
try
{
if (pDialog != null) {
pDialog.dismiss();
}
//pDialog.dismiss();
/**
* Updating parsed JSON data into ListView
* */
adapter = new SimpleAdapter(
getActivity(),LiveMatchList,
R.layout.live_list_row, new String[] { TAG_DateTimeLabel, "eventName", TAG_roundName, TAG_Venue, "team1Flag", "team2Flag" },
new int[] { R.id.livematchDate, R.id.livematchName, R.id.liveround, R.id.livevenue, R.id.liveteam1flag, R.id.liveteam2flag });
// updating listview
setListAdapter(adapter);
Log.d("LiveMatchList onPostExecute",String.valueOf(LiveMatchList));
}
catch(Exception ex)
{
Log.d("onPostExecute", ex.toString());
}
}
我已经实现了 onListItemClick 以从 MainActivity 转到详细信息页面,就像您建议的那样。
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
@SuppressWarnings("unchecked")
HashMap<String,String> selectedItem = (HashMap<String, String>) getListView().getItemAtPosition(position);
Bundle dataBundle = new Bundle();
dataBundle.putString("team1Id", selectedItem.get(TAG_homeTeamId));
dataBundle.putString("team2Id", selectedItem.get(TAG_awayTeamId));
((MainActivity)getActivity()).doTransaction("LiveFragment", dataBundle);
Fragment fragment = new LiveMatchDetailMainFragment();
fragment.setArguments(dataBundle);
android.support.v4.app.FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.content_frame, fragment);
fragmentTransaction.addToBackStack("LiveFragment");
fragmentTransaction.commit();
}
详细信息页面也是一个实现了 viewPager 的 fragment 。现在,当我从详细信息页面按下后退按钮时,它会按预期加载上一个 fragment ,并且我检查了日志,我可以看到调用了 setUserVisibleHint 并且按预期加载了选项卡,但选项卡中没有任何内容,应该有一个列表.请引用图表,如果有帮助,非常感谢您的帮助。我已经在这个问题上浪费了 3/4 天。
[MainActivity]
|
V
[EventFragment]
| | |
V V V
[Tab1] [Tab2] [Tab3]
[Tab1]
是一个 ListFragment 实现 onListItemClick -> Detail Fragment。
最佳答案
您是否在 ListFragment 中执行 fragment 事务?在 FragmentActivity 中执行此操作并使用 onListItemClick() 回调方法调用 FragmentActivity 方法,该方法应运行事务。
在 EventFragment 中替换:
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
viewpager.setAdapter(new MyAdapter(fragmentManager));
与:
viewpager.setAdapter(new MyAdapter(getChildFragmentManager()));
关于android - ListFragment 从 BackStack 返回后加载空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23820023/
我已经为使用 JGroups 编写了简单的测试。有两个像这样的简单应用程序 import org.jgroups.*; import org.jgroups.conf.ConfiguratorFact
我有一个通过 ajax 检索的 json 编码数据集。我尝试检索的一些数据点将返回 null 或空。 但是,我不希望将那些 null 或空值显示给最终用户,或传递给其他函数。 我现在正在做的是检查
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Why does one often see “null != variable” instead of “
嗨在我们公司,他们遵循与空值进行比较的严格规则。当我编码 if(variable!=null) 在代码审查中,我收到了对此的评论,将其更改为 if(null!=variable)。上面的代码对性能有影
我正在尝试使用 native Cordova QR 扫描仪插件编译项目,但是我不断收到此错误。据我了解,这是代码编写方式的问题,它向构造函数发送了错误的值,或者根本就没有找到构造函数。那么我该如何解决
我在装有 Java 1.8 的 Windows 10 上使用 Apache Nutch 1.14。我已按照 https://wiki.apache.org/nutch/NutchTutorial 中提
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: what is “=null” and “ IS NULL” Is there any difference bet
Three-EyedRaven 内网渗透初期,我们都希望可以豪无遗漏的尽最大可能打开目标内网攻击面,故,设计该工具的初衷是解决某些工具内网探测速率慢、运行卡死、服务爆破误报率高以及socks流
我想在Scala中像在Java中那样做: public void recv(String from) { recv(from, null); } public void recv(String
我正在尝试从一组图像补丁中创建一个密码本。我已将图像(Caltech 101)分成20 X 20图像块。我想为每个补丁创建一个SIFT描述符。但是对于某些图像补丁,它不返回任何描述符/关键点。我尝试使
我在验证器类中自动连接的两个服务有问题。这些服务工作正常,因为在我的 Controller 中是自动连接的。我有一个 applicationContext.xml 文件和 MyApp-servlet.
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 已关闭10 年前。 问题必须表现出对要解决的问题的最低程度的了解。告诉我们您尝试过做什么,为什么不起作用,以
大家好,我正在对数据库进行正常的选择,但是 mysql_num_rowsis 为空,我不知道为什么,我有 7 行选择。 如果您发现问题,请告诉我。 真的谢谢。 代码如下: function get_b
我想以以下格式创建一个字符串:id[]=%@&stringdata[]=%@&id[]=%@&stringdata[]=%@&id[]=%@&stringdata[]=%@&等,在for循环中,我得到
我正在尝试使用以下代码将URL转换为字符串: NSURL *urlOfOpenedFile = _service.myURLRequest.URL; NSString *fileThatWasOpen
我正在尝试将NSNumber传递到正在工作的UInt32中。然后,我试图将UInt32填充到NSData对象中。但是,这在这里变得有些时髦... 当我尝试将NSData对象中的内容写成它返回的字符串(
我正在进行身份验证并收到空 cookie。我想存储这个 cookie,但服务器没有返回给我 cookie。但响应代码是 200 ok。 httpConn.setRequestProperty(
我认为 Button bTutorial1 = (Button) findViewById(R.layout.tutorial1); bTutorial1.setOnClickListener
我的 Controller 中有这样的东西: model.attribute("hiringManagerMap",hiringManagerMap); 我正在访问此 hiringManagerMap
我想知道如何以正确的方式清空列表。在 div 中有一个列表然后清空 div 或列表更好吗? 我知道这是一个蹩脚的问题,但请帮助我理解这个 empty() 函数:) 案例)如果我运行这个脚本会发生什么:
我是一名优秀的程序员,十分优秀!