kevinjqy 2014-11-07 03:09 采纳率: 0%
浏览 1477

actionbar里添加发布和搜索按钮,但点击发布按钮无法跳转到相关fragment

public boolean onOptionsItemSelected(MenuItem item) {
// The action bar home/up action should open or close the drawer.
// ActionBarDrawerToggle will take care of this.
//Fragment fragment = null;
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}

// Handle action buttons
switch(item.getItemId()) {
case R.id.action_release:
{

        Toast.makeText(this, R.string.action_release, Toast.LENGTH_SHORT).show();
        ReleaseFragment fragment2 = new ReleaseFragment();
        Bundle args2 = new Bundle();
        args2.putString("name", "发布"); 
        fragment2.setArguments(args2);
        FragmentTransaction transaction2 = getSupportFragmentManager().beginTransaction();
        transaction2.replace(R.id.realtabcontent,fragment2);
        //transaction2.addToBackStack(null);
        transaction2.commit();
        return true;
    }
    case R.id.action_search:
    {

         //Toast.makeText(this, R.string.action_search, Toast.LENGTH_SHORT).show();
        SearchFragment fragment1 = new SearchFragment();
        Bundle args1 = new Bundle();
        args1.putString("name", "搜索"); 
        fragment1.setArguments(args1);
        FragmentTransaction transaction1 = getSupportFragmentManager().beginTransaction();
        transaction1.replace(R.id.realtabcontent,fragment1);
        //transaction1.addToBackStack(null);
        transaction1.commit();
        return true;
    }

    default:
        return super.onOptionsItemSelected(item);

    }          
}

点击发布按钮会弹出toast提示,但是内容空白。点击搜索按钮会正确的显示内容和控件。

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-03 01:46
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在你的R.layout.activity_main布局文件中,你需要在<com.google.android.material.tabs.TabLayout><com.google.android.material.tabs.TabItem>之间添加一个<TextView>,然后使用setOnTouchListener()来监听点击事件。这样你就可以在点击某个Tab时执行相应的操作了。 以下是一个示例:

    首先,在XML布局文件中添加一个<TextView>

    <TextView
        android:id="@+id/tv_action"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp" />
    

    然后,在你的Activity或Fragment中添加如下代码:

    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            TabLayout tabLayout = findViewById(R.id.tab_layout);
            TextView tvAction = findViewById(R.id.tv_action);
    
            // 设置TabLayout的适配器为一个简单的字符串数组
            tabLayout.addTab(tabLayout.newTab().setText("Release"));
            tabLayout.addTab(tabLayout.newTab().setText("Search"));
    
            // 创建一个Button对象,并设置其点击事件处理程序
            Button btnAction = new Button(this);
            btnAction.setText("Action");
            btnAction.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(MainActivity.this, TabActivity.class);
                    startActivity(intent);
                }
            });
    
            // 将Button添加到TabLayout的TabItem上
            tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
                @Override
                public void onTabSelected(TabLayout.Tab tab) {
                    tvAction.setText(tab.getText());
                }
    
                @Override
                public void onTabUnselected(TabLayout.Tab tab) {}
    
                @Override
                public void onTabReselected(TabLayout.Tab tab) {}
            });
        }
    }
    

    在这个例子中,当用户点击"Action"按钮时,将会启动一个新的活动(TabActivity),并在其中展示一个包含文本"Action"的TextView。

    评论

报告相同问题?