2017-05-22 9 views
0

So hier ist mein Problem, ich bleibe immer rot Unterstreichung in meinem loginFragment.show(getFragmentManager(), "login"); warum hat es eine Unterstreichung unter den Parametern. Wenn ich getSupportFragmentManager benutze und nicht AppCompatActivity benutze und stattdessen Aktivität verwende, dann hat es im Programm selbst keinen Fehler, aber sobald ich auf die Schaltfläche klicke, um das Dialogfeld anzuzeigen, stürzt es ab. Hier ist mein gesamter Code. immer rote Unterstreichung auf meiner .show, wenn ich getFragmentManager()

import android.app.Dialog;  
import android.content.Context;  
import android.content.DialogInterface;  
import android.support.v4.app.DialogFragment;  
import android.support.v7.app.AlertDialog;  
import android.support.v7.app.AppCompatActivity;  
import android.os.Bundle;  
import android.view.LayoutInflater;  
import android.view.View;  
import android.widget.EditText;  
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity {   
static Context context; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     context = this; 
    } 
    public void showLogin(View v){ 
     DialogFragment loginFragment = new LoginDialogFragment(); 
     loginFragment.show(getFragmentManager(),"login"); 
    } 

    public static class LoginDialogFragment extends DialogFragment{ 
     @Override 
     public Dialog onCreateDialog(Bundle savedInstanceState){ 
      AlertDialog.Builder builder = new 
        AlertDialog.Builder(getActivity()); 
      LayoutInflater inflater = getActivity().getLayoutInflater(); 
      View v = inflater.inflate(R.layout.layout_login,null); 
      final EditText etUsername = (EditText) 
        v.findViewById(R.id.username); 
      final EditText etPassword = (EditText) 
        v.findViewById(R.id.password); 
      builder.setView(v).setPositiveButton(R.string.login, new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        String username, password; 
        username = etUsername.getText().toString(); 
        password = etPassword.getText().toString(); 
        String msg; 
        if(username.equalsIgnoreCase("abcd")&&password.equalsIgnoreCase("1234")){ 
         msg = "Access Granted"; 
        } 
        else { 
         msg = "Access Denied"; 
        } 
        Toast.makeText(context, msg,Toast.LENGTH_SHORT).show(); 
       } 
      }).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener(){ 
       public void onClick(DialogInterface dialog,int id){ 

       } 
      }); 
        return builder.create(); 
     } 
    } 
} 
+0

Post Ausnahme/Fehler hier auch –

+0

Fehler: (26, 22) Fehler: kein geeignetes Verfahren für die Show gefunden (android.app.FragmentManager, String) Methode DialogFragment.show (android.support.v4.app.FragmentManager, String) ist nicht anwendbar (Argument nicht übereinstimmend; android.app.FragmentManager kann nicht in android.support.v4.app.FragmentManager konvertiert werden) Methode DialogFragmen t.show (FragmentTransaction, String) ist nicht anwendbar (argument mismatch; android.app.FragmentManager kann nicht in FragmentTransaction konvertiert werden) – apd

+0

Mögliches Duplikat von [kann nicht von android.app.FragmentManager in android.support.v4.app.FragmentManager konvertiert werden] (https://stackoverflow.com/questions/16690364/cannot- convert-from-android-app-fragmentmanager-to-android-support-v4-app-fragme) –

Antwort

1

So here is my problem, I keep on getting red underline in my loginFragment.show(getFragmentManager(), "login");

es ist, weil Ihr DialogFragment von der Support-Bibliothek ist. In diesem Fall müssen Sie getSupportFragmentManager und nicht getFragmentManager verwenden.

ändern

loginFragment.show(getFragmentManager(),"login"); 

mit

loginFragment.show(getSupportFragmentManager(),"login"); 
+0

Ich habe das schon gemacht, aber sobald ich auf den Knopf klicke, um das Dialogfeld anzuzeigen, stürzt mein Programm ab. – apd

+0

Möglicherweise haben Sie jetzt andere Fehler, da Sie die richtige FM verwenden. Versuchen Sie, einen Stacktrace anzuzeigen – user6547359

Verwandte Themen