Wrong 2nd argument type. Found: 'android.app.Fragment', required: 'android.support.v4.app.Fragment'
我正在YouTube上观看教学视频。 我从一开始就做过两次相同的事情,但仍然停留在那儿。 我将继续收到此错误,但他没有收到错误。
代码在这里。 错误在私有void DisplayFragment类下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | package com.example.kenpachi.navigation_drawer; import android.app.Fragment; import android.app.FragmentTransaction; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.NavigationView; import android.support.design.widget.Snackbar; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view,"Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.setDrawerListener(toggle); toggle.syncState(); NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); } @Override public void onBackPressed() { DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); if (drawer.isDrawerOpen(GravityCompat.START)) { drawer.closeDrawer(GravityCompat.START); } else { super.onBackPressed(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } private void DisplayFragment(int id) { Fragment fragment = null; switch (id) { case R.id.nav_one: fragment = new FragmentOne(); break; case R.id.nav_two: fragment = new FragmentTwo(); break; case R.id.nav_three: fragment = new FragmentThree(); } if (fragment != null) { android.support.v4.app.FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.MyFrameLayout, fragment); //"fragment" gives me this error. ft.commit(); } } @SuppressWarnings("StatementWithEmptyBody") @Override public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here. int id = item.getItemId(); if (id == R.id.nav_camera) { // Handle the camera action } else if (id == R.id.nav_gallery) { } else if (id == R.id.nav_slideshow) { } else if (id == R.id.nav_manage) { } else if (id == R.id.nav_share) { } else if (id == R.id.nav_send) { } DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); drawer.closeDrawer(GravityCompat.START); return true; } } |
这是给我错误的行(在
1 | ft.replace(R.id.MyFrameLayout, fragment); |
谢谢。 如果有人在这里有趣的话,我正在尝试做视频指南:https://youtu.be/iZ8Y7W2jbv8?t=386
android有两种类型的Fragment
所以您必须检查您的FragmentOne,FragmentTwo ..键入您的使用...
例如,在FragmentOne内使用
要么
在FragmentOne内部使用
片段创建和片段调用都必须是同一类型
多谢你们。 当我切换
对于MainActivity和FragmentOne-2-3,问题不存在了。
我之前只对MainActivity做过,所以我会得到新的错误。
再次感谢。
更换
1 | import android.app.Fragment; |
与
1 | import android.support.v4.app.Fragment; |