为什么我的BottomNavigationView没有显示?

时间:2019-03-25 19:21:10

标签: java android xml

我试图在我的项目中添加一个BottomNavigationView,但是当我运行该项目时却没有出现。

我想将其放在工具栏上,所以我创建了一个类来初始化它们并扩展AppCompatActivity,这样我使用工具栏或BottomNavigationView进行的活动就必须扩展该活动并调用方法初始化它(我不知道这是否是正确的方法,如果不正确,请告诉我)。因此,这可以与我的工具栏一起使用,但是我的BottomNavigationView没有显示。

这是我谈到的我的NavigationActivity:

public abstract class NavigationActivity extends AppCompatActivity {

    private Toolbar mToolbar;
    private BottomNavigationView mNavigationView;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }


    public void initNavigation(int navigationId) {
        mNavigationView = (BottomNavigationView) findViewById(navigationId);
        mNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
                switch (menuItem.getItemId()) {
                    case R.id.navigation_entrainements:
                        startActivity(new Intent(getBaseContext(),MenuEntrainementsActivity.class));
                        break;
                    case R.id.navigation_nutrition:
                        startActivity(new Intent(getBaseContext(),NutritionActivity.class));
                        break;
                    case R.id.navigation_statistiques:
                        startActivity(new Intent(getBaseContext(),StatistiquesActivity.class));
                        break;
                }
                return true;
            }
        });
    }

    public void initToolbar(int toolbarId) {
        mToolbar = (Toolbar) findViewById(toolbarId);
        mToolbar.setNavigationIcon(R.drawable.baseline_arrow_back_black_18dp);
        setSupportActionBar(mToolbar);
        getSupportActionBar().setDisplayShowTitleEnabled(false);

        mToolbar.setNavigationOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                finish();
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu,menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.btnHome :
                startActivity(new Intent(this,MainActivity.class));
                return true;
            case R.id.btnProfil :
                startActivity(new Intent(this,ProfilActivity.class));
                return true;
            default :
                return super.onOptionsItemSelected(item);
        }
    }
}

以及我在其他活动中如何使用它的一个例子:

initNavigation(R.id.navigation);
initToolbar(R.id.toolbar);

这是我在XML文件中实现BottomNavigationView的方式:

<android.support.design.widget.BottomNavigationView
        android:id="@+id/navigation"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginStart="0dp"
        android:layout_marginEnd="0dp"
        android:background="?android:attr/windowBackground"
        app:menu="@menu/navigation" />

如果您还需要其他任何内容,请问一下, 谢谢你的帮助 :) (对不起,如果我犯了错误,我的英语水平不是很好)

1 个答案:

答案 0 :(得分:0)

我从onCreate方法之外使用它。

class SearchListView(ListView):
    model = Post
    template_name = "public/search.html"
    success_url ='where you want to redirect'


    def get_queryset(self): # method that returns the queryset is `get_queryset`
       query = self.request.GET.get("q")
       if query:
        queryset = self.model.objects.filter(title__icontains=query) # double underscore not single
       return queryset

    def get_context_data(self, **kwargs):
       context = super(SearchListView, self).get_context_data(**kwargs)
       context['queryset'] = self.get_queryset()
       context['category'] = Category.objects.all()
       return context