2017-05-22 5 views
0

ここに私の問題があります。私は赤い下線をつけています。loginFragment.show(getFragmentManager(), "login"); なぜパラメータに下線が付きますか? getSupportFragmentManagerを使用してAppCompatActivityを使用せず、代わりにActivityを使用すると、プログラム自体にエラーはありませんが、ダイアログボックスを表示するためにボタンをクリックするとクラッシュします。ここで私のコード全体が表示されます。は、私がgetFragmentManager()を使用すると、私の.showに赤い下線をつけています。

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

ポストここにあなたの例外/エラーも –

+0

エラーと) メソッドDialogFragment.show(android.support.v4.app.FragmentManager、String)は適用されません (引数の不一致、android.app.FragmentManagerはandroid.support.v4.app.FragmentManagerに変換できません) メソッドDialogFragmen t.show(FragmentTransaction、String)は適用されません (引数の不一致。 android.app.FragmentManagerをFragmentTransactionに変換できません) – apd

+0

[android.support.v4.app.FragmentManager]に変換できません(https://stackoverflow.com/questions/16690364/cannot- android-support-v4-app-fragme) –

答えて

1

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

あなたDialogFragmentは、サポートライブラリからあるので、それがあります。この場合はgetSupportFragmentManagerで、getFragmentManagerではなく使用する必要があります。 (26、22)エラー:ショーのために見つかりません適切な方法(android.app.FragmentManager、文字列

変更

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

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

私はすでにそれを行っていますが、ボタンをクリックしてダイアログボックスを表示するとすぐにプログラムがクラッシュします。 – apd

+0

正しいFMを使用するようになると、他のエラーが発生する可能性があります。スタックトレースを表示してみてください – user6547359

関連する問題