如何扩展已实施导航抽屉的活动?

时间:2019-05-16 18:23:09

标签: android

我有两个活动,一个是MainActivity,它在导航抽屉中工作。另一个是testActivity,它从MainActivity扩展。当我从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扩展了它,但是在这个新活动中不可点击。可以编辑代码以使其可点击。

1 个答案:

答案 0 :(得分:0)

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