如何从我的活动中意图在我的标签栏中分段?

Posted

技术标签:

【中文标题】如何从我的活动中意图在我的标签栏中分段?【英文标题】:How to intent from my activity to fragment in my tab bar? 【发布时间】:2019-03-21 23:02:02 【问题描述】:

我正在尝试从我的活动到片段的活动。意图是好的,但我想要的是当它意图时它会根据它在之前的活动中点击的内容自动调用 fragment2。我正在尝试使用 getExtra 来制作 if 在片段的活动中制作如果 id 为 1 然后使用以下代码调用片段:

  String sessionId2;
    String id = null;
    String sessionId = getIntent().getStringExtra("baik");
    sessionId2 = getIntent().getStringExtra("diperbaiki");
    String sessionId3 = getIntent().getStringExtra("rusak");

    Log.d("baik",""+sessionId);
    Log.d("diperbaiki",""+sessionId2);
    Log.d("rusak",""+sessionId3);

     if (id == sessionId3) 
        TabLayout.Tab tab = tabLayout.getTabAt(1);
        tab.select();
    else if (id == sessionId2) 
        TabLayout.Tab tab = tabLayout.getTabAt(2);
        tab.select();
    

但它仍然无法正常工作。 我也尝试像下面的代码一样改变位置:

public SectionsPagerAdapter(FragmentManager fm) 
        super(fm);
    

    @Override
    public Fragment getItem(int position) 
        // getItem is called to instantiate the fragment for the given page.
        // Return a PlaceholderFragment (defined as a static inner class below).
        if (id == sessionId2)
            position = 1;
        

        switch (position) 
            case 0:
                // Top Rated fragment activity
                return new BaikFragment();
            case 1:
                // Games fragment activity
                return new DiperbaikiFragment();
            case 2:
                // Movies fragment activity
                return new RusakFragment();
        

        return null;
    

但它也不会工作。请帮忙有什么想法吗?

【问题讨论】:

错误是什么,您是否尝试调试您的代码? 你使用标签布局吗? 是的,我使用标签布局@lasagnakid77 没有错误。它只是不想在我打算时更改片段。当我打算将它用于片段的活动时,我想要它会改变片段@KaranMer 正确理解这一点,您想从包含标签的活动切换到特定标签或不是标签的片段? 【参考方案1】:

在您的活动 onCreate 或设置 TabLayout 的任何位置中,您可以使用分配的编号检索特定的选项卡(添加到视图寻呼机(适配器)的第一个选项卡应为 0,第二个为 1 ):

TabLayout.Tab tab = tabLayout.getTabAt(0);

所以我建议你在设置标签布局后做这样的事情:

String sessionId= getIntent().getStringExtra("baik");
  if (id == sessionId)
            TabLayout.Tab tab = tabLayout.getTabAt(0);
            tab.select();
        
  else if (....) 
            TabLayout.Tab tab2 = tabLayout.getTabAt(1);
            tab2.select();
  

让我知道这是否有效!

【讨论】:

我建议你做一个 Toast 来向你表明意图正在按预期工作。还将标签活动代码添加到您的主帖子中。 它确实有效,但有点奇怪。它不会遵循我发送的 ID。我只是在上面添加的代码。如果id==session2 它将更改为rusak 片段,如果id==session3 将更改baik 和diperbaiki 片段并且我不知道如何在正确的位置更改baik 片段 并且意图实际上运作良好。但也许我的 if 语句是错误的 我的代码/解决方案是否有效?如果这是我的解决方案,请接受它作为解决方案,否则使用您的解决方案编辑您的帖子,以便其他人知道他们是否有类似的问题。很高兴帮助(如果我这样做了:)) 您的代码有效。问题只是我的意图【参考方案2】:

使用活动和标签的简单方法是TabLayout using activities instead of fragments

Your_layout_id.setOnTouchListener(new OnSwipeTouchListener() 
public void onSwipeTop() 
    Toast.makeText(MyActivity.this, "top", Toast.LENGTH_SHORT).show();

public void onSwipeRight() 
    Toast.makeText(MyActivity.this, "right", Toast.LENGTH_SHORT).show();
    Intent intent = new Intent(this, SecondActivity.class);
    startActivity(intent);

public void onSwipeLeft() 
    Toast.makeText(MyActivity.this, "left", Toast.LENGTH_SHORT).show();
    Intent intent = new Intent(this, FirstActivity.class);
    startActivity(intent);

public void onSwipeBottom() 
    Toast.makeText(MyActivity.this, "bottom", Toast.LENGTH_SHORT).show();


public boolean onTouch(View v, MotionEvent event) 
    return gestureDetector.onTouchEvent(event);

);

【讨论】:

是否可以根据我之前点击的内容更改标签? @QubaisyAndyantama 您可以移动到上一个和前一个选项卡。我在我的项目中试过这个 所以它会根据我在之前的活动中点击的内容转到我想要的标签? 是的,这里实际上实现了滑动。和你使用两个片段时发生的情况一样

以上是关于如何从我的活动中意图在我的标签栏中分段?的主要内容,如果未能解决你的问题,请参考以下文章

如何在煎茶的底部标签栏中制作更大的图标?

Phonegap:在标签栏中添加自定义图标

如何使定位服务图标从状态栏中消失?

更改标签栏中活动整个部分的颜色 - iOS 7

刷新标签(选项卡式活动)

如何在 iOS 的标签栏中禁用蓝色突出显示?