2017-09-16 2 views
-1

Ich schaue Tutorial Videos auf Youtube. Ich habe genau dasselbe 2 mal von Anfang an gemacht, aber immer noch da. Ich werde diesen Fehler erhalten, aber er bekommt keinen Fehler.Falscher 2. Argumenttyp. Gefunden: 'android.app.Fragment', benötigt: 'android.support.v4.app.Fragment'

Der Code ist hier. Der Fehler ist unten unter private void DisplayFragment-Klasse.

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

Das ist die Linie (in DisplayFragment), die mir den Fehler gibt:

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

Dank. Wenn jemand hier interessant das zu tun versuchen, Video-guide, im ist: https://youtu.be/iZ8Y7W2jbv8?t=386

+0

Import entfernen android.app.Fragment; und setzen Sie import android.support.v4.app.Fragment; –

Antwort

0

android haben zwei Arten von Fragment

  1. android.app. Fragment
  2. android.support.v4.ap p.Fragment

so haben Sie Ihre FragmentOne zu überprüfen, FragmentTwo .. die Ihren Typ mit ...

für Beispiel innerhalb von FragmentOne Ihr mit import android.app.Fragment dann müssen Sie import android.app.Fragment in Ihrer Aktivität verwenden.

oder

innerhalb von FragmentOne Sie mit import android.support.v4.app.Fragment dann müssen Sie import android.support.v4.app.Fragment in Ihrer Aktivität verwenden.

Fragment erstellen und Fragment Aufruf beide sind in gleicher Art

0

ersetzen

import android.app.Fragment; 

mit

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

Danke Jungs sein müssen. Wenn ich die "import android.app.Fragment;" zu "android.support.v4.app.Fragment;"
für MainActivity und FragmentOne-Two-Three die Probleme gegangen.
Ich war das nur für MainActivity vor, damit ich neue Fehler bekomme.
Danke nochmal.

Verwandte Themen