【问题标题】:How can I extend an activity which has a navigation drawer implemented?如何扩展实现了导航抽屉的活动?
【发布时间】:2019-05-16 18:23:08
【问题描述】:

我有两个活动,一个是 MainActivity,它有导航抽屉工作。另一个是从 MainActivity 扩展的 testActivity。当我从 MainActivity 移动到 testActivity 时,导航栏出现在那里,但当我点击那里时不工作.

我已经阅读了太多类似 extending navigation drawer activity to other activities 的帖子,但我不明白。

以下是我的 MainActivity

public class MainActivity extends AppCompatActivity {
    private DrawerLayout dl;
    private ActionBarDrawerToggle t;
    private NavigationView nv;
    Button nextBtn;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        dl = (DrawerLayout) findViewById(R.id.activity_main);
        t = new ActionBarDrawerToggle(this, dl, R.string.Open, R.string.Close);
        nextBtn = (Button)findViewById(R.id.nextAct);
        nextBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this,TestActivity.class);
                startActivity(intent);
            }
        });

        dl.addDrawerListener(t);
        t.syncState();

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        nv = (NavigationView) findViewById(R.id.nv);
        nv.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                int id = item.getItemId();
                switch (id) {
                    case R.id.account:
                        Toast.makeText(MainActivity.this, "My Account", Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.settings:
                        Toast.makeText(MainActivity.this, "Settings", Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.mycart:
                        Toast.makeText(MainActivity.this, "My Cart", Toast.LENGTH_SHORT).show();
                        break;
                    default:
                        return true;
                }


                return true;

            }
        });


    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        if(t.onOptionsItemSelected(item))
            return true;

        return super.onOptionsItemSelected(item);


    }




}

以下是testActivity。

public class TestActivity extends MainActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);


    }
}

第二个活动获得导航栏,因为我从 MainActivity 扩展了它,但在这个新活动中不可点击。可以编辑代码使其可点击。

【问题讨论】:

    标签: android


    【解决方案1】:

    我认为最好的方法是使用片段。导航抽屉 + 栏保持不变,您在屏幕的其余部分更改片段。希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 2014-05-04
      • 1970-01-01
      • 2014-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 2016-05-20
      • 2020-06-02
      相关资源
      最近更新 更多