У меня проблемы с применением того же макета, что и 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);
}
}