[英]How to add a home fragment to app in Android Studio
Good Day, Please I want to add a home fragment that displays as the default fragment when I open my app but I don't know how to go about this.美好的一天,请我想添加一个主页片段,当我打开我的应用程序时显示为默认片段,但我不知道如何 go 解决这个问题。 I have created the home fragment xml and java files but I don't know what to do to display it on startup.
我已经创建了主片段 xml 和 java 文件,但我不知道如何在启动时显示它。 This is the code in my main activity file and the error I received when I tried to insert the home fragment:
这是我的主要活动文件中的代码,也是我尝试插入主片段时收到的错误:
Invalid method declaration; return type required
package com.example.anjieapp;
import android.os.Bundle;
import android.view.MenuItem;
import android.widget.FrameLayout;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
import com.google.android.material.navigation.NavigationView;
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
private Toolbar toolbar;
private DrawerLayout drawerLayout;
private NavigationView navigationView;
FrameLayout frameLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = findViewById(R.id.main_toolbar);
setSupportActionBar(toolbar);
drawerLayout = findViewById(R.id.drawer_layout);
navigationView = findViewById(R.id.nav_view);
frameLayout = (FrameLayout) findViewById(R.id.frame);
ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle(
this,
drawerLayout,
toolbar,
R.string.openNavDrawer,
R.string.closeNavDrawer
);
drawerLayout.addDrawerListener(actionBarDrawerToggle);
actionBarDrawerToggle.syncState();
navigationView.setNavigationItemSelectedListener(this);
}
loadFragment(new homeFragment());
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
int id = menuItem.getItemId();
if (id == R.id.about_data) {
loadFragment(new frag1());
}
else if (id == R.id.data_visual) {
loadFragment(new frag2());
}
else if (id == R.id.about_app) {
loadFragment(new frag3());
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
@Override
public void onBackPressed() {
if(drawerLayout.isDrawerOpen(GravityCompat.START)) {
drawerLayout.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
public void loadFragment(Fragment fragment) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame, fragment);
transaction.commit();
}
/*@Override
public void onPointerCaptureChanged ( boolean hasCapture){
}
}*/
}
Any help would be sincerely appreciated任何帮助将不胜感激
Please check your homeFragment class, in onCreateView override method must be return view like this:请检查您的 homeFragment class,在 onCreateView 覆盖方法中必须像这样返回视图:
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// Creating view corresponding to the fragment
View v = inflater.inflate(R.layout.alert_fragment, container, false);
return v;
}
I think this is happening cause of you use getSupportFragmentManager()
instead of getFragmentManager()
我认为这是因为您使用
getSupportFragmentManager()
而不是getFragmentManager()
Please change your loadFragment() method.请更改您的 loadFragment() 方法。
public void loadFragment(Fragment fragment) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame, fragment);
transaction.commit();
}
To至
public void loadFragment(Fragment fragment) {
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.frame, fragment);
transaction.commit();
}
When you are using android.support.v4.app.FragmentManager
then you should use getSupportFragmentManager()
and if you are using android.app.FragmentManager
then use getFragmentManager()
当您使用
android.support.v4.app.FragmentManager
时,您应该使用getSupportFragmentManager()
如果您使用的是android.app.FragmentManager
然后使用getFragmentManager()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.