两个onCreate(bundle savedInstanceState)在同一个Activity中?

huangapple go评论93阅读模式
英文:

Two oncreate(bundle savedinstancestate) in the same activity?

问题

我对Android开发非常陌生,遇到了一个问题,我似乎无法解决或理解解决方案。

我尝试在具有底部导航栏的活动中添加导航抽屉到Java程序中。XML部分看起来很好,也能正常工作,但是下面的Java代码报告以下错误:

  1. 'onCreate(Bundle)' 'MyApp' 中已经定义

我理解并且能够看到这个问题,但是我不知道如何解决它 - 是否可能?

  1. public class Dash extends AppCompatActivity {
  2. private DrawerLayout drawer;
  3. Button signout;
  4. ChipNavigationBar chipNavigationBar;
  5. @Override
  6. protected void onCreate(Bundle savedInstanceState) {
  7. super.onCreate(savedInstanceState);
  8. setContentView(R.layout.activity_dash);
  9. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
  10. signout=findViewById(R.id.logout);
  11. signout.setOnClickListener(new View.OnClickListener() {
  12. @Override
  13. public void onClick(View view) {
  14. FirebaseAuth.getInstance().signOut();
  15. startActivity(new Intent(getApplicationContext(),Existing.class));
  16. finish();
  17. }
  18. });
  19. chipNavigationBar = findViewById(R.id.bottom_nav_menu);
  20. chipNavigationBar.setItemSelected(R.id.bottom_nav_menu, true);
  21. getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,new NewsFragment()).commit();
  22. bottomMenu();
  23. Toolbar toolbar = findViewById(R.id.toolbar);
  24. setSupportActionBar(toolbar);
  25. drawer = findViewById(R.id.drawer_layout);
  26. ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar,
  27. R.string.navigation_drawer_open, R.string.navigation_drawer_close);
  28. drawer.addDrawerListener(toggle);
  29. toggle.syncState();
  30. }
  31. private void bottomMenu() {
  32. chipNavigationBar.setOnItemSelectedListener(new ChipNavigationBar.OnItemSelectedListener() {
  33. @Override
  34. public void onItemSelected(int i) {
  35. Fragment fragment = null;
  36. switch (i) {
  37. case R.id.bottom_nav_menu:
  38. fragment = new HomeFragment();
  39. break;
  40. case R.id.bottom_nav_news:
  41. fragment = new NewsFragment();
  42. break;
  43. case R.id.bottom_nav_profile:
  44. fragment = new ProfileFragment();
  45. break;
  46. }
  47. getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment).commit();
  48. }
  49. });
  50. }
  51. @Override
  52. public void onBackPressed(){
  53. if (drawer.isDrawerOpen(GravityCompat.START)) {
  54. drawer.closeDrawer(GravityCompat.START);
  55. } else {
  56. super.onBackPressed();
  57. }
  58. }
  59. }
英文:

I'm very new to android development and have ran into an issue that I can't seem to get around or get my head around the resolution.

I'm trying to add a navigation drawer to an activity that has a bottom navigation bar in the java program. I've got the XML looking good and working but the below java is reporting the following error:

  1. 'onCreate(Bundle)' is already defined in 'MyApp'

which I understand and can see but I don't know how to resolve it - is it possible?

  1. public class Dash extends AppCompatActivity {
  2. private DrawerLayout drawer;
  3. Button signout;
  4. ChipNavigationBar chipNavigationBar;
  5. @Override
  6. protected void onCreate(Bundle savedInstanceState) {
  7. super.onCreate(savedInstanceState);
  8. setContentView(R.layout.activity_dash);
  9. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
  10. signout=findViewById(R.id.logout);
  11. signout.setOnClickListener(new View.OnClickListener() {
  12. @Override
  13. public void onClick(View view) {
  14. FirebaseAuth.getInstance().signOut();
  15. startActivity(new Intent(getApplicationContext(),Existing.class));
  16. finish();
  17. }
  18. });
  19. chipNavigationBar = findViewById(R.id.bottom_nav_menu);
  20. chipNavigationBar.setItemSelected(R.id.bottom_nav_menu, true);
  21. getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,new NewsFragment()).commit();
  22. bottomMenu();
  23. }
  24. private void bottomMenu() {
  25. chipNavigationBar.setOnItemSelectedListener(new ChipNavigationBar.OnItemSelectedListener() {
  26. @Override
  27. public void onItemSelected(int i) {
  28. Fragment fragment = null;
  29. switch (i) {
  30. case R.id.bottom_nav_menu:
  31. fragment = new HomeFragment();
  32. break;
  33. case R.id.bottom_nav_news:
  34. fragment = new NewsFragment();
  35. break;
  36. case R.id.bottom_nav_profile:
  37. fragment = new ProfileFragment();
  38. break;
  39. }
  40. getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment).commit();
  41. }
  42. });
  43. }
  44. @Override
  45. protected void onCreate(Bundle savedInstanceState) {
  46. super.onCreate(savedInstanceState);
  47. setContentView(R.layout.activity_dash);
  48. Toolbar toolbar = findViewById(R.id.toolbar);
  49. setSupportActionBar(toolbar);
  50. drawer = findViewById(R.id.drawer_layout);
  51. ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar,
  52. R.string.navigation_drawer_open, R.string.navigation_drawer_close);
  53. drawer.addDrawerListener(toggle);
  54. toggle.syncState();
  55. }
  56. @Override public void onBackPressed(){
  57. if (drawer.isDrawerOpen(GravityCompat.START)) {
  58. drawer.closeDrawer(GravityCompat.START);
  59. } else {
  60. super.onBackPressed();
  61. }
  62. }
  63. }

答案1

得分: 1

移除一个 OnCreate(....)

尝试以下代码:

  1. public class Dash extends AppCompatActivity {
  2. private DrawerLayout drawer;
  3. Button signout;
  4. ChipNavigationBar chipNavigationBar;
  5. @Override
  6. protected void onCreate(Bundle savedInstanceState) {
  7. super.onCreate(savedInstanceState);
  8. setContentView(R.layout.activity_dash);
  9. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
  10. signout=findViewById(R.id.logout);
  11. drawer = findViewById(R.id.drawer_layout);
  12. ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar,
  13. R.string.navigation_drawer_open, R.string.navigation_drawer_close);
  14. drawer.addDrawerListener(toggle);
  15. toggle.syncState();
  16. signout.setOnClickListener(new View.OnClickListener() {
  17. @Override
  18. public void onClick(View view) {
  19. FirebaseAuth.getInstance().signOut();
  20. startActivity(new Intent(getApplicationContext(),Existing.class));
  21. finish();
  22. }
  23. });
  24. chipNavigationBar = findViewById(R.id.bottom_nav_menu);
  25. chipNavigationBar.setItemSelected(R.id.bottom_nav_menu, true);
  26. getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,new NewsFragment()).commit();
  27. bottomMenu();
  28. }
  29. private void bottomMenu() {
  30. chipNavigationBar.setOnItemSelectedListener(new ChipNavigationBar.OnItemSelectedListener() {
  31. @Override
  32. public void onItemSelected(int i) {
  33. Fragment fragment = null;
  34. switch (i) {
  35. case R.id.bottom_nav_menu:
  36. fragment = new HomeFragment();
  37. break;
  38. case R.id.bottom_nav_news:
  39. fragment = new NewsFragment();
  40. break;
  41. case R.id.bottom_nav_profile:
  42. fragment = new ProfileFragment();
  43. break;
  44. }
  45. getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment).commit();
  46. }
  47. });
  48. }
  49. @Override public void onBackPressed(){
  50. if (drawer.isDrawerOpen(GravityCompat.START)) {
  51. drawer.closeDrawer(GravityCompat.START);
  52. } else {
  53. super.onBackPressed();
  54. }
  55. }
  56. }
英文:

Remove one OnCreate(....)

Try Below Code:

  1. public class Dash extends AppCompatActivity {
  2. private DrawerLayout drawer;
  3. Button signout;
  4. ChipNavigationBar chipNavigationBar;
  5. @Override
  6. protected void onCreate(Bundle savedInstanceState) {
  7. super.onCreate(savedInstanceState);
  8. setContentView(R.layout.activity_dash);
  9. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
  10. signout=findViewById(R.id.logout);
  11. drawer = findViewById(R.id.drawer_layout);
  12. ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar,
  13. R.string.navigation_drawer_open, R.string.navigation_drawer_close);
  14. drawer.addDrawerListener(toggle);
  15. toggle.syncState();
  16. signout.setOnClickListener(new View.OnClickListener() {
  17. @Override
  18. public void onClick(View view) {
  19. FirebaseAuth.getInstance().signOut();
  20. startActivity(new Intent(getApplicationContext(),Existing.class));
  21. finish();
  22. }
  23. });
  24. chipNavigationBar = findViewById(R.id.bottom_nav_menu);
  25. chipNavigationBar.setItemSelected(R.id.bottom_nav_menu, true);
  26. getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,new NewsFragment()).commit();
  27. bottomMenu();
  28. }
  29. private void bottomMenu() {
  30. chipNavigationBar.setOnItemSelectedListener(new ChipNavigationBar.OnItemSelectedListener() {
  31. @Override
  32. public void onItemSelected(int i) {
  33. Fragment fragment = null;
  34. switch (i) {
  35. case R.id.bottom_nav_menu:
  36. fragment = new HomeFragment();
  37. break;
  38. case R.id.bottom_nav_news:
  39. fragment = new NewsFragment();
  40. break;
  41. case R.id.bottom_nav_profile:
  42. fragment = new ProfileFragment();
  43. break;
  44. }
  45. getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment).commit();
  46. }
  47. });
  48. }
  49. @Override public void onBackPressed(){
  50. if (drawer.isDrawerOpen(GravityCompat.START)) {
  51. drawer.closeDrawer(GravityCompat.START);
  52. } else {
  53. super.onBackPressed();
  54. }
  55. }
  56. }

huangapple
  • 本文由 发表于 2020年8月22日 20:29:18
  • 转载请务必保留本文链接:https://go.coder-hub.com/63536191.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定