2012-09-01 1 views
0

내 코드는 용서 추한 것으로 나타날 경우 나 전 그래서진행 대화 상자가 표시되지 않습니다

http://developer.android.com/training/basics/firstapp/index.html에 튜토리얼에서 학습에 의해 나는 여전히 주에 대해 시작 매우 아마추어 안드로이드 개발자임을 먼저 정리해 드리죠 그게 ..

실제 문제 - "진행 DIALOG가 나타나지 않습니다"-하지만 나머지 코드는 잘 작동합니다. 그것은 SMS를 보내고 있으며 나는 그것을 받고 있습니다, 그냥 진행 대화의 문제에 직면 해 있습니다.

public class MainActivity extends Activity { 
Context context; 

public final static String EXTRA_NUMBER = "com.example.myfirstapp.NUMBER"; 
public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE"; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

/** Called when the user clicks the Send button */ 
public void sendMessage(View view) { 
    if (!isOnline()) { 
     Toast.makeText(MainActivity.this,"No Internet Access..Cannot Send SMS", Toast.LENGTH_LONG).show(); 
    } else { 

     ProgressDialog prgDialog = ProgressDialog.show(MainActivity.this,"Free Sms","Sending SMS..Please Wait..!!",true);   
     EditText editTextNum = (EditText) findViewById(R.id.edit_number); 
     EditText editText = (EditText) findViewById(R.id.edit_message); 
     String number = editTextNum.getText().toString(); 
     String message = editText.getText().toString(); 
     try { 
      prgDialog.dismiss(); 
      String msgreciever = number; 
      String testMessage = message; 
      SmsSender.sendMessage(msgreciever, testMessage);     
      Toast.makeText(MainActivity.this, "Message Sent Successfully",Toast.LENGTH_LONG).show(); 
      editTextNum.setText(""); 
      editText.setText(""); 
     } catch (Exception ex) { 
      prgDialog.dismiss(); 
      Toast.makeText(MainActivity.this, "Message Sending Failed",Toast.LENGTH_LONG).show(); 
     } 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 

public boolean isOnline() { 
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo netInfo = cm.getActiveNetworkInfo(); 
    if (netInfo != null && netInfo.isConnectedOrConnecting()) { 
     return true; 
    } 
    return false; 
} 

} 
+0

nandeesh 무엇을 했습니까? –

+0

코드 – nandeesh

+0

에서 가져온 글을 어떻게 삭제할 수 있습니까? –

답변

0

안녕하세요 Tapan 후 대화 상자를 제거해야합니다 .. 그래서 코드의 "else"부분에 Thread ...를 사용하는 수정 된 코드를 넣으십시오. 그러면 분명히 작동 할 것입니다 ...

EditText editTextNum = (EditText) findViewById(R.id.edit_number); 
EditText editText = (EditText) findViewById(R.id.edit_message); 
final String number = editTextNum.getText().toString(); 
final String message = editText.getText().toString(); 
final ProgressDialog prgDialog = ProgressDialog.show(this,"Free Sms","Sending SMS..Please Wait..!!",true); 
Thread t=new Thread(new Runnable() { 
    public void run() { 
     // TODO Auto-generated method stub 
     try { 
      Thread.sleep(1000); 
      SmsSender.sendMessage(number, message); 
      prgDialog.dismiss(); 
      Toast.makeText(MainActivity.this, "Message Sent Successfully",Toast.LENGTH_LONG).show(); 

     } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
}); 
t.start(); 
editTextNum.setText(""); 
editText.setText(""); 
1

당신은 즉시가 표시되지 않는 이유는 prgDialog.show.

prgDialog.dismiss

을 요구하고있다.

편집 : 코드 아래에 추가하는 대신 해고 ,이 실제로 작동 이런 종류의 "스레드"또는 "의 Runnable"을 사용할 필요가 삼초

new CountDownTimer(3000, 1000) 
{ 
     @Override 
     public void onTick(long l) { 
     } 

     @Override 
     public void onFinish(){ 
      prgDialog.dismiss(); 
     }; 
}.start(); 
+0

하지만 보내기 버튼을 클릭하면 "메시지가 성공적으로 전송되었습니다"라는 토스트 메시지가 표시되는 동안 애플리케이션이 잠시 중단됩니다. –

+0

해제 통화를 제거 했습니까? – nandeesh

+0

아니, 나는 그것을 제거했다. .its 내가 여기에 붙여 넣은 동일한 코드. –