我是新来的,我写这个问题是因为我正在为Android设备制作我的第一个应用程序。当然,我使用的是Android Studio。我的问题是:
我遇到了一个奇怪的情况:我在MainActivity中有一个带有欢迎用户的TextVield,当应用启动时,以及当我使用汉堡菜单导航到应用中的其他片段时,会显示该TextVield。每个片段中都可以看到来自MainActivity的文本。汉堡本身工作正常。我该如何解决此问题?
这是我的部分代码--我认为是关键的部分,但我不是100%肯定,因为我对Android和Java还很陌生。
此信息来自MainActivity.java:
public void selectedtMenuItem(MenuItem menuItem)
{
android.support.v4.app.Fragment mfragment= null;
Class fragmentClass;
switch (menuItem.getItemId())
{
case R.id.main:
fragmentClass = main.class;
break;
case R.id.menu:
fragmentClass = menu.class;
break;
case R.id.galery:
fragmentClass = galery.class;
break;
case R.id.contact:
fragmentClass = contact.class;
break;
default:
fragmentClass = main.class;
}
try
{
mfragment= (android.support.v4.app.Fragment) fragmentClass.newInstance();
}
catch (Exception e)
{
e.printStackTrace();
}
android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.fragmentContent, mfragment).addToBackStack(null).commit();
menuItem.setChecked(true);
setTitle(menuItem.getTitle());
mlayout.closeDrawers();
}
private void setContent (NavigationView navigationView)
{
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener()
{
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item)
{
selectedtMenuItem(item);
return false;
}
});
}
这来自于activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/main_activity"
tools:context=".MainActivity">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fragmentContent" >
<TextView
android:id="@+id/welcome"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="center"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
/>
</android.support.constraint.ConstraintLayout>
<android.support.design.widget.NavigationView
android:id="@+id/nawigacja"
app:headerLayout="@layout/header"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="@color/white"
app:itemTextColor="@color/black"
app:itemIconTint="#303F9F"
app:menu="@menu/drawermenu"
android:layout_gravity="start">
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
也许AndroidManifest.xml会很有用:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.administrator.menu_boczne">
<application
android:allowBackup="true"
android:icon="@mipmap/icon"
android:label="@string/app_name"
android:roundIcon="@mipmap/logo"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
1条答案
按热度按时间vybvopom1#
这很简单:你所做的是将fragment添加到你拥有的
ConstraintLayout
中。它不会删除你拥有的TextView
,而只是在它后面添加fragment的UI元素。您应该如何保留您的设计:
1.在
TextBox
之后添加另一个元素FrameLayout
就可以了,并将您的idfragmentContent
从您的ConstraintLayout
移动到它1.向它进行交易,就像你已经在做的那样: