我NavigationView成功地设置了一个抽屉,并且很容易实现.但是,我需要我的标题图像,这是LinearLayout我通过的一部分,因为app:headerLayout点击时动画,我无法实现这一点.我需要你的帮助.
这是我的activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<!-- This DrawerLayout has two children at the root -->
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- This LinearLayout represents the contents of the screen -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!-- The ActionBar displayed at the top -->
<include
layout="@layout/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<!-- The main content view where fragments are loaded -->
<FrameLayout
android:id="@+id/flContent"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
<!-- The navigation drawer that comes from the left --> …Run Code Online (Sandbox Code Playgroud) 我正在使用新的NavigationView,因为我将项目升级到API 23,效果很好,但是如何设置默认片段?打开到应用程序开头的片段.这是我的代码,感谢您的建议.
public class MainActivity extends AppCompatActivity {
private Toolbar toolbar;
private NavigationView navigationView;
private DrawerLayout drawerLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initializing Toolbar and setting it as the actionbar
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//Initializing NavigationView
navigationView = (NavigationView) findViewById(R.id.navigation_view);
//Setting Navigation View Item Selected Listener to handle the item click of the navigation menu
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
// This method will trigger on item Click of navigation menu
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) { …Run Code Online (Sandbox Code Playgroud) 我正在尝试在片段的onCreateView方法中执行下一个代码:
if (displayedPalabra!=null){
setCardAttributes(displayedPalabra);
NavigationView navigationView = (NavigationView) layout.findViewById(R.id.nav_view);
navigationView.getMenu().getItem(0).setChecked(true);
}
Run Code Online (Sandbox Code Playgroud)
但是在执行时给出了下一个错误:
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'android.view.Menu android.support.design.widget.NavigationView.getMenu()'
我的问题是:Fragment的布局是否无法从MainActivity访问NavigationView并因此检索空值?我是否必须以其他方式访问它?代码应该是不言自明的,我只是试图在我的应用程序的NavigationView菜单中设置此Fragment的项目...通常我从MainActivity执行以放置默认值但这次从另一个片段调用此Fragment ...
尝试了很多方法,但没有一个完美地工作。我想从导航视图中设置的片段中获取主要活动。我试过
@Override
public void onBackPressed() {
startActivity(new Intent(this, MainActivity.class));
}
Run Code Online (Sandbox Code Playgroud)
但它不会正常工作。我希望它就像当我处于零散的活动中时它返回到主活动,而再次单击返回时它退出(我已经这样做了),当按下返回时帮助我回到主活动
主活动.java
public class MainActivity extends AppCompatActivity {
private static final int PERMISSION_REQUEST_CODE = 1000 ;
private static final String TAG = "MainActivity";
private AdView mAdView;
ImageView imageView;
RecyclerView recyclerView;
RecyclerView.LayoutManager layoutManager;
List<Item> items;
CustomAdapter adapter;
private long backpressedtime;
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode)
{
case PERMISSION_REQUEST_CODE:
{
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
Toast.makeText(this, "Permission …Run Code Online (Sandbox Code Playgroud) android back android-fragments navigation-drawer navigationview
我想添加一个 id 名称以使用 onNavigationItemSelected 更改片段,但我无法以编程方式添加 id。我需要像“setId ()”这样的代码,如所示的代码
menu.add("menu_name");
menu.getItem(i).setId("nav_item"+(i));
menu.getItem(i).setIcon(idIcon);
Run Code Online (Sandbox Code Playgroud)