0

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

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

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

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

另一个关于片段的小问题 - 我试图在运行时动态添加它们 - 我需要在运行时创建所有片段吗?所以每个人都需要一个 .add [Drink fragment, Menu 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();
            }
}

客户选择片段

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;
      }
   }
    

    
    
  }

出于善意原因编辑我的帖子的人完全没问题[清晰度等]。

4

1 回答 1

2

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

于 2013-10-14T05:27:41.700 回答