gpt4 book ai didi

java - 创建一个 android fragment ,根据按钮 Activity 打开另一个 fragment

转载 作者:行者123 更新时间:2023-12-02 06:38:52 24 4
gpt4 key购买 nike

我正在尝试创建一个在运行时添加动态 fragment 的 Activity 。从该 fragment 中,我希望能够通过单击按钮打开其他六个 fragment 。 [最有可能使用案例来实现这一点]

将其视为 Windows 8 UI;有 6 个按钮,每个按钮打开一个新 fragment 。

不幸的是,我不知道该怎么做。我似乎无法获得将数据传递回主要 Activity 的按钮。由于 git 事故,我还丢失了相当多的代码。这是我重新创建的内容。

如果您有任何关于编码风格、语法、java、OO 的建议,我们也欢迎您提供。我来自 C 背景。我的最终目标是为稍后的一些简单的语法糖创建一个replaceFragment(Frag)方法。尽管到目前为止我还没有成功实现这一点。

另一个关于 fragment 的小问题 - 我试图在运行时动态添加它们 - 我需要在运行时创建所有 fragment 吗?所以每个都需要一个 .add [饮料 fragment ,菜单 fragment ] 或者我只需要执行 .replace

SingleFragmentActivity.java

 public abstract class SingleFragmentActivity extends FragmentActivity{
protected abstract Fragment createFragment();

FragmentManager fm = getSupportFragmentManager();


@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); //Lock screen orientation for app

Fragment frag = fm.findFragmentById(R.id.fragment_container);
fm.beginTransaction()
.add(R.id.fragment_container,frag)
.commit();
}

}

Customer_Activity.java

public class Customer_Activity extends SingleFragmentActivity {

public static Context appContext;

@Override
protected Fragment createFragment() {
return new CustomerSelectionFragment();
}
}

客户选择 fragment

public class CustomerSelectionFragment extends Fragment implements OnClickListener{



@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.customer_selection_fragment, container, false);
//Buttons should be placed here?
Button btnDrink = (Button) v.findViewById(R.id.Drink);
btnDrink.setOnClickListener(this);

Button btnMenu = (Button) v.findViewById(R.id.Menu);
btnDrink.setOnClickListener(this);

return v;
}

//implement the onClick method here
public void onClick(View v) {
// Perform action on click
switch(v.getId()) {
case R.id.Drink:
//Not sure how to pass "Create Drink Fragment to activity?
break;
case R.id.Menu:
//Pass Create Menu fragment to activity?
break;
}
}




}

完全可以接受人们出于善意原因编辑我的帖子[清晰度等]。

最佳答案

fragment 之间的任何通信都应该通过 Activity 完成。这是开发者网站 http://developer.android.com/training/basics/fragments/communicating.html 的链接,本教程是关于 fragment 之间的通信,并且几乎解释了所有内容。

关于java - 创建一个 android fragment ,根据按钮 Activity 打开另一个 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19353850/

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