gpt4 book ai didi

java - 主/详细流程 - 点击列表项后在主区域中打开列表 fragment

转载 作者:行者123 更新时间:2023-12-01 12:06:29 26 4
gpt4 key购买 nike

我刚刚在 Eclipse 中创建了一个主/详细流程,我想知道当点击特定项目时如何让我的主列表在主部分中打开不同的列表?我不希望在“详细信息”部分中打开该列表。我查遍了www,但找不到任何相关教程。

点击“第一个列表”将打开列表 A。

点击“第二个列表”将打开列表 B。

点击“第三个列表”将打开列表 C。

MainContent.java

package com.apptacularapps.exitsexpertlondonlite.content;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.view.View;
import android.widget.ListView;

public class MainContent {

public static List<MainItem> ITEMS = new ArrayList<MainItem>();

public static Map<String, MainItem> ITEM_MAP = new HashMap<String, MainItem>();

static {
addItem(new MainItem("1", "1st list"));
addItem(new MainItem("2", "2nd list"));
addItem(new MainItem("3", "3rd list"));
}

private static void addItem(MainItem item) {
ITEMS.add(item);
ITEM_MAP.put(item.id, item);
}

public static class MainItem {
public String id;
public String content;

public MainItem(String id, String content) {
this.id = id;
this.content = content;
}

@Override
public String toString() {
return content;
}
}
}

错误1 error 1

package com.apptacularapps.exitsexpertlondonlite.content;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.os.Bundle;

import android.view.View;
import android.widget.ListView;

public class MainContent {

public static List<MainItem> ITEMS = new ArrayList<MainItem>();

public static Map<String, MainItem> ITEM_MAP = new HashMap<String, MainItem>();

static {
addItem(new MainItem("1", "1st list"));
addItem(new MainItem("2", "2nd list"));
addItem(new MainItem("3", "3rd list"));
}

private static void addItem(MainItem item) {
ITEMS.add(item);
ITEM_MAP.put(item.id, item);
}

public static class MainItem {
public String id;
public String content;

public MainItem(String id, String content) {
this.id = id;
this.content = content;
}

@Override
public String toString() {
return content;
}
}

public void onItemSelected(String id) {
Bundle arguments = new Bundle();
arguments.putString(MasterListFragment.ARG_ITEM_ID, id);
MasterListFragment fragment = new MasterListFragment();
fragment.setArguments(arguments);
getSupportFragmentManager().beginTransaction()
.replace(R.id.master_list_container, fragment).commit();
}
}

错误2 enter image description here enter image description here

最佳答案

您需要将主 fragment 替换为包含您要显示的列表的 fragment 。

假设你有这样的东西:

@Override
public void onItemSelected(String id) {
Bundle arguments = new Bundle();
arguments.putString(MasterListFragment.ARG_ITEM_ID, id);
MasterListFragment fragment = new MasterListFragment();
fragment.setArguments(arguments);
getSupportFragmentManager().beginTransaction()
.replace(R.id.item_detail_container, fragment).commit();

}

所以而不是

.replace(R.id.item_detail_container, fragment).commit();

你会打电话

.replace(R.id.master_list_container, fragment).commit();

哪里R.id.master_list_container是一个容器(例如 <FrameLayout> ),其中包含您的 master ListFragment .

<小时/>

看你的截图,我认为你需要替换 <fragment>activity_item_list.xml<FrameLayout android:id="master_list_container">然后按照我上面提到的步骤进行操作。

您还需要将原始母版 ListFragment通过添加类似

的内容来就位
getSupportFragmentManager().beginTransaction()
.replace(R.id.master_list_container, new ItemListFragment()).commit();

onCreate()您的ItemListActivity .

关于java - 主/详细流程 - 点击列表项后在主区域中打开列表 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27552091/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com