2013-08-02 2 views
2

사용자가 저장 버튼을 클릭하면 AlertDialog이 나타나고 파일 이름에 대한 텍스트를 입력하라는 메시지가 표시됩니다.AlertDialog에서 토스트를 표시하는 방법은 무엇입니까?

사용자가 이름을 지정하지 않고 양수 버튼 ("확인")을 클릭하면 해당 번호를 지정하라는 메시지를 표시하고 AlertDialog을 열어 둡니다. 하지만 축배는 표시되지 않으며 대화 상자가 닫힙니다. AlertDialog에 대한

코드는 여기에 있습니다 :

AlertDialog.Builder alert = new AlertDialog.Builder(this); 

    alert.setTitle(R.string.save_game); 
    alert.setMessage(R.string.request_name); 

    // Set an EditText view to get user input 
    final EditText input = new EditText(this); 
    input.setHint(R.string.untitled); 
    alert.setView(input); 

    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int whichButton) { 
     String value = input.getText().toString(); 
     if(value != null){ 
      // Do something with value  
     } 
     else{ 
      Toast.makeText(context, R.string.no_name_given, Toast.LENGTH_SHORT).show(); 
     } 
    } 
    }); 

    alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int whichButton) { 
     // Canceled. 
    } 
    }); 

    alert.show(); 

가 어떻게 이런 일이 만들 수 있습니까?

감사합니다.

+0

컨텍스트 란 무엇입니까? 그것은 활동 컨텍스트인가? – Raghunandan

+0

예. 부모 작업은'onCreate (...) '에'context = this'를 설정합니다 – Rookatu

답변

4
Public void showToast(){ 
    Toast.makeText(this, R.string.no_name_given, Toast.LENGTH_SHORT).show(); 
} 

코드에서 이와 같은 경고 대화 상자에서 토스터를 표시하는 대신이 메서드를 호출하면됩니다.

else{ 
    ShowToast(); 
} 

것은 닫 왜 확실하지 .. 열고 사용을

public void forceOpen() { 

AlertDialog.Builder alert = new AlertDialog.Builder(this); 

alert.setTitle(R.string.save_game); 
alert.setMessage(R.string.request_name); 

// Set an EditText view to get user input 
final EditText input = new EditText(this); 
input.setHint(R.string.untitled); 
alert.setView(input); 

alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
public void onClick(DialogInterface dialog, int whichButton) { 
    String value = input.getText().toString(); 
    if(value != null){ 
     // Do something with value  
    } 
    else{ 
     Toast.makeText(context, R.string.no_name_given, Toast.LENGTH_SHORT).show(); 
    } 
} 
}); 

alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
public void onClick(DialogInterface dialog, int whichButton) { 
    // Canceled. 
} 
}); 

alert.show(); 

    } 

가 그냥 다시이 방법을 유지하려면하지만 다음과 같이이

+0

이것은 토스트를 표시했지만'AlertDialog'를 열어 두지 않았습니다. – Rookatu

+0

흠, 왜 가까이에 전화하지 않았는지 모르겠습니다. 사용자가 확인을 클릭하면 다시 열립니다. 그들은 알 수 없습니다. – NightSkyCode

+0

코드를 메서드에 넣는 것을 봅니다. 재귀 (recursion)에서 "Ok"를 클릭하는 코드 내에서 메소드가 자신을 호출 할 것을 제안하고 있습니까? 문제는, 클릭이 소비 될 때까지 첫 번째 'AlertDialog'이 파괴되었다고 생각하지 않기 때문입니다. 따라서 AlertDialog에 AlertDialog가 레이어 처리됩니다. – Rookatu

0
public void alert() 
    { 
     LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View v = inflater.inflate(R.layout.simple, null); 

     final EditText etText = (EditText) v.findViewById(R.id.etName); 

     final AlertDialog d = new AlertDialog.Builder(this) 
     .setView(v) 
     .setTitle("Warning ..") 
     .setPositiveButton(android.R.string.ok, 
       new Dialog.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface d, int which) 
      { 
       //Do nothing here. We override the onclick 
       Toast.makeText(getApplicationContext(), "Enter Text", Toast.LENGTH_LONG).show(); 
      } 
     }) 
     .setNegativeButton(android.R.string.cancel, null) 
     .create(); 
     d.show(); 
} 
+0

코드를이 코드로 바꿉니다. 그것은 당신을 도울지도 모른다 .. – Andrain

2

변경 코드를 작동합니다

if(value != null && value.length()>0){ 

// Do something with value  
}else{ 
      Toast.makeText(context, R.string.no_name_given, Toast.LENGTH_SHORT).show(); 
} 
+0

이것은 토스트를 보여 주었지만,'AlertDialog'를 열어 두지 않았다. – Rookatu

+0

@Rookatu, 위의 솔루션을 사용해 보셨습니까? 그것이 텍스트 값의 길이를 확인하지 않은 경우 이전 작업으로 작동 할 수 있기를 바랍니다. – Suji

+0

네, 귀하의 제안을 시도했습니다. Toast가 표시되지 않는다는 문제가 해결되었지만 위의 주석에서 알 수 있듯이 'AlertDialog'를 열어 두지 않았습니다. 사용자가 유효한 파일 이름을 입력하고 "확인"을 누르거나 "취소"를 누를 때까지 열어두기를 원합니다. – Rookatu

0

확인 버튼을 사용 중지 할 수 있습니다. 조건이 유효하면 버튼을 다시 활성화하십시오.

+0

이렇게하면 버튼을 눌렀을 때 토스트를 어떻게 보여줄 수 있습니까? 아니면 그 아이디어를 포기할 것을 제안하고 있습니까? – Rookatu

+0

예. 생각을 바꿀 수 있습니다. –

+0

또는 AlertDialog 대신 사용자 정의 대화 상자를 사용할 수 있습니다. –

관련 문제