【问题标题】:Cannot get the position of the tabhost from a fragment to another fragment using bundle无法使用 bundle 将 tabhost 的位置从一个片段获取到另一个片段
【发布时间】:2015-07-02 03:02:29
【问题描述】:

我有两个片段。一个用于选项卡,一个用于调用列表视图的主布局。我无法将“位置”从 AlarmTab 类传递给 AlarmActivity 类。该位置正在传递,但它只获取我的数组的长度。当我从我的位置 [0] 选项卡单击列表时,它返回 myTabHost 的长度,而不是单击的选项卡。我想获得点击的位置,下面是我到目前为止所做的代码。我已经为此工作了几个小时。希望有人可以帮助我指出我所缺少的。先感谢您!

来自 AlarmTab 类

mTabHost = (FragmentTabHost) rootView.findViewById(android.R.id.tabhost);
widget = (TabWidget) rootView.findViewById(android.R.id.tabs);
hs = (HorizontalScrollView) rootView.findViewById(R.id.horizontalScrollView);
mTabHost.setup(getActivity(), getChildFragmentManager(), android.R.id.tabcontent);

for(int i=0; i<SmashDeviceData.get_instance().devices.size(); i++) {

    AlarmActivity alarmActivity = new AlarmActivity();
    Bundle bundle = new Bundle();
    bundle.putInt("position", i);
    alarmActivity.setArguments(bundle);
    mTabHost.addTab(mTabHost.newTabSpec("i").setIndicator(SmashDeviceData.get_instance().devices.get(i).deviceName), AlarmActivity.class, bundle);
    } 

来自 AlarmActivity 类

   public void addAlarm(){
        ImageView addAlarmButton = (ImageView) getActivity().findViewById(R.id.add_alarm);
        addAlarmButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentActivity mainDrawer = (FragmentActivity) context;
                Fragment fragment;
                Bundle b = getArguments();
                int position = b.getInt("position", 0);
                Toast.makeText(context, String.valueOf(b.getInt("position")), Toast.LENGTH_SHORT ).show();
                fragment = AlarmSetActivity.newInstance(context, position);
                FragmentManager fragmentManager = mainDrawer.getSupportFragmentManager();
                FragmentTransaction ft = fragmentManager.beginTransaction();
                ft.replace(R.id.content_frame, fragment);
                ft.addToBackStack(null);
                ft.commit();
            }
        });
    }

【问题讨论】:

    标签: android android-fragments android-tabhost android-tabs


    【解决方案1】:

    你的问题出在这一行

        mTabHost.addTab(mTabHost.newTabSpec("i").setIndicator(SmashDeviceData.get_instance().
        devices.get(i).deviceName), AlarmActivity.class, bundle);
    

    应该是这样的

        mTabHost.addTab(mTabHost.newTabSpec(SmashDeviceData.get_instance().
        devices.get(i).deviceName).setIndicator(SmashDeviceData.get_instance().devices.get(i).
        deviceName), AlarmActivity.class, bundle);
    

    【讨论】:

    • 我怎么能错过!谢谢! @劳伦斯
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 2016-09-30
    相关资源
    最近更新 更多