2016-04-12 5 views
2

Hallo Ich habe diesen Fehler in meiner App gefunden. Es ist abgestürzt, als ich auf meine Navigation Header geklickt habe. Ich möchte zum Profilfragment gehen, wenn ich auf meine Kopfzeile klicke. Es funktioniert in KitKat. Aber es wurde in Lollipop und höher zerquetscht. Ich habe diesen Fehler erhalten.Android Version Kontrollfehler. ThemeWrapper Fehler in Fragment

java.lang.IllegalArgumentException: Erwartete Empfänger vom Typ com.example.chitsumoe.good_friend.MainActivity, bekam aber android.view.ContextThemeWrapper.

Dies ist mein Hauptaktivitätscode.

package com.example.chitsumoe.good_friend; 

import android.net.Uri; 
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener,InformTrackFragment.OnFragmentInteractionListener{ 

Toolbar toolbar; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    HomeFragment homefragment = new HomeFragment(); 
    android.support.v4.app.FragmentTransaction homefragmentTransaction = getSupportFragmentManager().beginTransaction(); 
    homefragmentTransaction.replace(R.id.frame, homefragment); 
    homefragmentTransaction.commit(); 

    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

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

} 

public void goToProfile(View view) 
{ 
    Toast.makeText(getApplicationContext(),"Clicked",Toast.LENGTH_SHORT).show(); 
    ProfileFragment profileFragment = new ProfileFragment(); 
    android.support.v4.app.FragmentTransaction profileFragmentTransaction = getSupportFragmentManager().beginTransaction(); 
    profileFragmentTransaction.replace(R.id.frame, profileFragment); 
    profileFragmentTransaction.commit(); 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
} 


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

@SuppressWarnings("StatementWithEmptyBody") 
@Override 
public boolean onNavigationItemSelected(MenuItem item) 
{ 
    // Handle navigation view item clicks here. 
    int id = item.getItemId(); 


    if (id == R.id.nav_home) 
    { 
     HomeFragment homefragment = new HomeFragment(); 
     android.support.v4.app.FragmentTransaction homefragmentTransaction = getSupportFragmentManager().beginTransaction(); 
     homefragmentTransaction.replace(R.id.frame, homefragment); 
     homefragmentTransaction.commit(); 
     // return true; 
    } 
    else if (id == R.id.nav_findfriend) 
    { 
     FindFriendFragment findFriendFragment=new FindFriendFragment(); 
     android.support.v4.app.FragmentTransaction findfriendfragmentTransaction = getSupportFragmentManager().beginTransaction(); 
     findfriendfragmentTransaction.replace(R.id.frame, findFriendFragment); 
     findfriendfragmentTransaction.commit(); 
     // return true; 

    } else if (id == R.id.nav_friendrequest) 
    { 
     FriendRequestFragment friendRequestFragment=new FriendRequestFragment(); 
     android.support.v4.app.FragmentTransaction friendrequestfragmentTransaction = getSupportFragmentManager().beginTransaction(); 
     friendrequestfragmentTransaction.replace(R.id.frame, friendRequestFragment); 
     friendrequestfragmentTransaction.commit(); 
     //return true; 
    } 
    else if (id == R.id.nav_informtrack) 
    { 

     InformTrackFragment informtrackfragment=new InformTrackFragment(); 
     android.support.v4.app.FragmentTransaction informtrackfragmentTransaction=getSupportFragmentManager().beginTransaction(); 
     informtrackfragmentTransaction.replace(R.id.frame,informtrackfragment); 
     informtrackfragmentTransaction.commit(); 
    } 
    else if (id == R.id.nav_setting) 
    { 
     SettingFragment settingFragment=new SettingFragment(); 
     android.support.v4.app.FragmentTransaction settingfragmentTransaction = getSupportFragmentManager().beginTransaction(); 
     settingfragmentTransaction.replace(R.id.frame, settingFragment); 
     settingfragmentTransaction.commit(); 

    } 
    else if (id == R.id.nav_log_out) { 

    } 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 
} 

@Override 
public void onFragmentInteraction(Uri uri) { 

} 
} 

Dies ist mein ProfilFragment-Code.

public class ProfileFragment extends Fragment { 

private OnFragmentInteractionListener mListener; 

public ProfileFragment() { 
    // Required empty public constructor 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View rootView = inflater.inflate(R.layout.fragment_profile, container, false); 
    return rootView; 
} 

// TODO: Rename method, update argument and hook method into UI event 
public void onButtonPressed(Uri uri) { 
    if (mListener != null) { 
     mListener.onFragmentInteraction(uri); 
    } 
} 

@Override 
public void onAttach(Activity activity) { 
    super.onAttach(activity); 
} 

@Override 
public void onDetach() { 
    super.onDetach(); 
    mListener = null; 
} 

public interface OnFragmentInteractionListener { 
    // TODO: Update argument type and name 
    void onFragmentInteraction(Uri uri); 
} 
} 

Was ist los mit Lollipop?

Dies ist das gesamte Crashprotokoll.

04-12 05: 28: 03.835 9141-9141/com.example.chitsumoe.good_friend E/Android Runtime: fatal EXCEPTION: main Prozess: com.example.chitsumoe.good_friend, PID: 9141 Java. lang.IllegalArgumentException: Erwarteter Empfänger vom Typ com.example.chitsumoe.good_friend.MainActivity, aber habe android.view.ContextThemeWrapper bei java.lang.reflect.Method.invoke (Native Method) bei android.view.View $ DeclaredOnClickListener. onClick (View.java:4447) bei android.view.View.performClick (View.java:5198) bei android.view.View $ Perform Click.run (View.java:21147) bei android.os.Handler.handleCallback (Handler.java:739) bei android.os.Handler.dispatchMessage (Handler.java:95) bei android.os.Looper. Schleife (Looper.java:148) bei android.app.ActivityThread.main (ActivityThread.java:5417) bei java.lang.reflect.Method.invoke (native Methode) bei com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616)

+0

Bitte senden Sie das gesamte Crashlog – SMR

+0

I Protokoll hinzugefügt hatte. thx –

+0

@SMR Sie können jetzt überprüfen –

Antwort

0

für mir wurde es verursacht mit android:theme="@style/ThemeOverlay.AppCompat.Dark" in untergeordneten Ansichten in Navigation Header-XML.

Dies verursachte Fehler

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="top" 
    android:orientation="vertical"> 

    <LinearLayout 
     android:id="@+id/linearLayoutNavHeader" 
     android:layout_width="match_parent" 
     android:layout_height="@dimen/nav_header_height" 
     android:background="@drawable/menu_header" 
     android:orientation="vertical" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark"> 
    </LinearLayout> 
</LinearLayout> 

dieses Problem gelöst Ändern

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="top" 
    android:orientation="vertical" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark"> 

    <LinearLayout 
     android:id="@+id/linearLayoutNavHeader" 
     android:layout_width="match_parent" 
     android:layout_height="@dimen/nav_header_height" 
     android:background="@drawable/menu_header" 
     android:orientation="vertical" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin"> 
    </LinearLayout> 
</LinearLayout>