Моя активность показывает белую страницу, когда она должна перейти к другой активности - PullRequest
0 голосов
/ 12 декабря 2018

У меня проблемы с применением того же макета, что и home_activity.xml.

Когда я нажимаю значок поиска в bottomNavigationView, он показывает пустую страницу без bottomNavigationView.

КакНасколько я отлаживал, похоже, context.startActivity (intent1);не работает, но не знаю, как это исправить.

сообщение об ошибке выглядит следующим образом

W / ActivityThread: handleWindowVisibility: нет активности для токена android.os.BinderProxy @9a52ab7

коды здесь:

SearchActivity

package com.example.android.instagramclone;

import android.content.Context;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.support.annotation.Nullable;
import android.support.design.internal.BottomNavigationMenu;
import android.support.design.widget.BottomNavigationView;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;

import com.example.android.instagramclone.Utils.BottomNavigationViewHelper;

public class SearchActivity extends AppCompatActivity {

    private static final String TAG = "SearchActivity";
    private Context mContext = SearchActivity.this;
    private static final int ACTIVITY_NUM = 1;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
        super.onCreate(savedInstanceState, persistentState);
        setContentView(R.layout.activity_home);
        Log.d(TAG, "onCreate: started.");

        setupBottomNavigationView();
    }

    private void setupBottomNavigationView(){
        Log.d(TAG, "setBottomNavigationView: setting up bottomNavigationView");
        BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottomNavViewBar);
//        BottomNavigationViewHelper.setUpBottomNavigationView(bottomNavigationView);
        BottomNavigationViewHelper.enableNavigation(mContext, bottomNavigationView);
        Menu menu = bottomNavigationView.getMenu();
        MenuItem menuItem = menu.getItem(ACTIVITY_NUM);
        menuItem.setChecked(true);
    }
}

layout_bottom_navigation_view

<merge xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_alignParentBottom="true">

        <android.support.design.widget.BottomNavigationView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/bottomNavViewBar"
            android:background="@drawable/white_grey_border_top"
            app:menu="@menu/bottom_navigation_menu"
            app:labelVisibilityMode="unlabeled"
            >

        </android.support.design.widget.BottomNavigationView>

    </RelativeLayout>

</merge>

BottomNavigationViewHelper

package com.example.android.instagramclone.Utils;

import android.content.Context;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.design.bottomnavigation.LabelVisibilityMode;
import android.support.design.widget.BottomNavigationView;
import android.util.Log;
import android.view.MenuItem;
import android.widget.SearchView;

import com.example.android.instagramclone.HomeActivity;
import com.example.android.instagramclone.LikesActivity;
import com.example.android.instagramclone.ProfileActivity;
import com.example.android.instagramclone.R;
import com.example.android.instagramclone.SearchActivity;
import com.example.android.instagramclone.ShareActivity;

public class BottomNavigationViewHelper {

    private static final String TAG = "BottomNavigationView";

    public static void enableNavigation(final Context context, BottomNavigationView view){
        view.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                //switch to different activities
                switch (item.getItemId()){
                    case R.id.ic_house: //ACTIVITY_NUM = 0
                        Intent intent1 = new Intent(context, HomeActivity.class);
                        context.startActivity(intent1);
                        Log.d(TAG, "onNavigationItemSelected: ");
                        break;
                    case R.id.ic_search: //ACTIVITY_NUM = 1
                        Intent intent2 = new Intent(context, SearchActivity.class);
                        context.startActivity(intent2);
                        Log.d(TAG, "onNavigationItemSelected: Search");
                        break;
                    case R.id.ic_circle:  //ACTIVITY_NUM = 2
                        Intent intent3 = new Intent(context, ShareActivity.class);
                        context.startActivity(intent3);
                        break;
                    case R.id.ic_alert: //ACTIVITY_NUM = 3
                        Intent intent4 = new Intent(context, LikesActivity.class);
                        context.startActivity(intent4);
                        break;
                    case R.id.ic_android:  //ACTIVITY_NUM = 4
                        Intent intent5 = new Intent(context, ProfileActivity.class);
                        context.startActivity(intent5);
                        break;
                }
                return false;
            }
        });
    }
}

Заранее спасибо.

22: 41 добавлено

HomeActivity

package com.example.android.instagramclone;

import android.content.Context;
import android.nfc.Tag;
import android.support.design.widget.BottomNavigationView;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;

import com.example.android.instagramclone.Utils.BottomNavigationViewHelper;

public class HomeActivity extends AppCompatActivity {

    //What activity it's going through
    private static final String TAG = "HomeActivity";
    private static final int ACTIVITY_NUM = 0;



    @Override
    protected void onCreate(Bundle savedInstanceState) {


        super.onCreate(savedInstanceState);

        Context mContext = HomeActivity.this;
        setContentView(R.layout.activity_home);
        Log.d(TAG, "onCreate: starting.");

        setupBottomNavigationView(mContext);
    }

    /**
     * BottomNavigationViewSetup
     */
    private void setupBottomNavigationView(Context mContext){
        Log.d(TAG, "setBottomNavigationView: setting up bottomNavigationView");
        BottomNavigationView bottomNavigationView = (BottomNavigationView)findViewById(R.id.bottomNavViewBar);
        BottomNavigationViewHelper.enableNavigation(mContext, bottomNavigationView);
        Menu menu = bottomNavigationView.getMenu();
        MenuItem menuItem = menu.getItem(ACTIVITY_NUM);
        menuItem.setChecked(true);
    }
}

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Спасибо за ваши комментарии.Теперь я знаю, почему и как решить эту проблему."import android.os.PersistableBundle;"в SearchActivity было неправильно.когда я его удаляю, это решает проблему.

0 голосов
/ 12 декабря 2018

Вам нужно инициализировать контекст в onCreate of Homeactivity.

mContext = Homeactivity.this;

или Просто измените этот оператор на

BottomNavigationViewHelper.enableNavigation(HomeActivity.this, bottomNavigationView);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...