我正在尝试创建一个在运行时添加动态片段的活动。从那个片段我希望能够在按钮点击时打开其他六个片段。 [尽可能使用案例来实现这一点]
将其视为Windows 8 UI;有6个按钮,每个按钮都会打开一个新片段。
不幸的是我不知道如何解决这个问题。我似乎无法通过按钮将数据传递回主要活动。由于git事故,我也失去了相当多的代码。这是我重新创造的内容。
如果你有关于编码风格,语法,java,OO的任何提示,那些也是受欢迎的。我来自C背景。我的最终目标是为稍后的一些简单的语法糖创建一个replaceFragment(Frag)方法。虽然到目前为止我还没有成功实现这一点。
片段的另一个小问题 - 我试图在运行时动态添加它们 - 我是否需要在运行时创建所有这些?所以每个人都需要一个.add [饮片片段,菜单片段]或者我只需要做.replace
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();
}
}
public class Customer_Activity extends SingleFragmentActivity {
public static Context appContext;
@Override
protected Fragment createFragment() {
return new CustomerSelectionFragment();
}
}
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;
}
}
}
完全可以让人们出于善意的原因编辑我的帖子[清晰度等]。
答案 0 :(得分:2)
片段之间的任何通信都应该通过活动来完成。这是开发者网站http://developer.android.com/training/basics/fragments/communicating.html的链接,该教程是关于片段之间的通信,几乎解释了所有内容。