第二个参数类型错误。 找到:“ android.app.Fragment”,必需:“ android.support.v4.app.Fragment”

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;
}
}

这是给我错误的行(在DisplayFragment中):

1
ft.replace(R.id.MyFrameLayout, fragment);

谢谢。 如果有人在这里有趣的话,我正在尝试做视频指南:https://youtu.be/iZ8Y7W2jbv8?t=386


android有两种类型的Fragment

  • android.app.Fragment
  • android.support.v4.app.Fragment
  • 所以您必须检查您的FragmentOne,FragmentTwo ..键入您的使用...

    例如,在FragmentOne内使用import android.app.Fragment进行示例,则必须在Activity中使用import android.app.Fragment

    要么

    在FragmentOne内部使用import android.support.v4.app.Fragment,则必须在Activity中使用import android.support.v4.app.Fragment

    片段创建和片段调用都必须是同一类型


    多谢你们。 当我切换
    "import android.app.Fragment;""android.support.v4.app.Fragment;"
    对于MainActivity和FragmentOne-2-3,问题不存在了。
    我之前只对MainActivity做过,所以我会得到新的错误。
    再次感谢。


    更换

    1
    import android.app.Fragment;

    1
    import android.support.v4.app.Fragment;