我无法动态地将项目添加到导航栏中,我已经解决了添加此类项目的问题
`for(int i = 0; i<lista.size(); i++){
SubMenu menuGroup = menu.addSubMenu(Menu.NONE, i, Menu.NONE, lista.get(i));
for(int j = 0; j<5; j++){
menuGroup.add(item + j);
}`
问题在于:
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.nav_manage) {
// Handle the camera action
//here comes the action for the first item
} else if (id == R.id.item_2) {
//here comes the action for item 2 and so on
所以问题是,一旦我动态创建了项目(已经完成了),我该如何添加项目点击(已经创建的项目的操作)。 我尝试了一个for循环,但因为它是一个if - else if条件我不能使用for循环。 任何人都可以帮助我吗?
答案 0 :(得分:0)
我之前遇到过同样的问题并以这种方式解决了
在 content_main.xml 中添加ID为 frag_layout 的FrameLayout之后,我执行了以下步骤:
FragDetail.java
public class FragDetail extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.frag_detail, container, false);
Bundle bundle = getArguments();
if(bundle != null) {
TextView mText = (TextView) view.findViewById(R.id.txt_detail);
mText.setText(bundle.getString("drawer_title"));
}
return view;
}}
frag_detail.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<TextView
android:text="detail clicked"
android:layout_width="wrap_content"
android:textAppearance="@style/TextAppearance.AppCompat.Headline"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:id="@+id/txt_detail" /></RelativeLayout>
MainActivity.java中的方法
public FragDetail getFragment(String desc) {
FragDetail frag = new FragDetail();
Bundle bundle = new Bundle();
bundle.putString("drawer_title", desc);
frag.setArguments(bundle);
return frag;
}
调用方法
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
String nmClient = (String) item.getTitle();
Fragment frag = getFragment(nmClient);
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.frag_layout, frag);
ft.commit();
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
我实际上找到了这个link
的解决方案