продолжает получать красное подчеркивание на моем .show, когда я использую getFragmentManager()

Итак, вот моя проблема, я продолжаю подчеркивать красным в моем loginFragment.show(getFragmentManager(), "login");, почему у него есть подчеркивание под параметрами. Когда я использую getSupportFragmentManager и не использую AppCompatActivity, а вместо этого использую Activity, да, в самой программе нет ошибки, но как только я нажимаю кнопку, чтобы отобразить диалоговое окно, происходит сбой. Вот мой весь код.

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

person apd    schedule 22.05.2017    source источник
comment
Опубликуйте свое исключение/ошибку здесь также   -  person Ravindra Kushwaha    schedule 22.05.2017
comment
Ошибка: (26, 22) ошибка: не найден подходящий метод для метода show(android.app.FragmentManager,String) DialogFragment.show(android.support.v4.app.FragmentManager,String) неприменим (несоответствие аргументов; android. app.FragmentManager не может быть преобразован в android.support.v4.app.FragmentManager) Метод DialogFragment.show(FragmentTransaction,String) неприменим (несоответствие аргументов; android.app.FragmentManager не может быть преобразован в FragmentTransaction)   -  person apd    schedule 22.05.2017
comment
Возможный дубликат не может конвертироваться из android. app.FragmentManager в android.support.v4.app.FragmentManager   -  person Ravindra Kushwaha    schedule 22.05.2017
comment
обратитесь к этому stackoverflow.com/a/25306259/1848157   -  person Radhey    schedule 22.05.2017
comment
Вам также необходимо расширить свой класс из android.support.v4.app.FragmentActivity, а не только из стандартного android.AppCompatActivity, чтобы получить этот метод.   -  person Radhey    schedule 22.05.2017
comment
Расширение его до FragmentActivity исправило это для меня, но теперь у него нет заголовка и значка приложения.   -  person apd    schedule 22.05.2017


Ответы (1)


Итак, вот моя проблема, я продолжаю подчеркивать красным в моем loginFragment.show(getFragmentManager(), "login");

это потому, что ваш DialogFragment из библиотеки поддержки. В этом случае вы должны использовать getSupportFragmentManager, а не getFragmentManager.

Сдача

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

с

loginFragment.show(getSupportFragmentManager(),"login");
person Blackbelt    schedule 22.05.2017
comment
Я уже сделал это, но как только я нажимаю кнопку, чтобы показать диалоговое окно, моя программа падает. - person apd; 22.05.2017
comment
Теперь, когда вы используете правильный FM, у вас могут быть другие ошибки. Попробуйте показать трассировку стека - person user6547359; 22.05.2017