0

首先让我澄清一下,我仍然是一个非常业余的 android 开发人员,大约一周前通过学习http://developer.android.com/training/basics/firstapp/index.html上的教程开始的

因此,如果我的代码看起来很丑陋,请原谅我。

现在实际问题 - “PROGRESS DIALOG DOESN'T APPEAR” - 但其余代码工作正常。它正在发送 SMS,我正在接收它们,只是面临 PROGRESS DIALOG 的问题。

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

}
4

2 回答 2

1

你在打电话

prgDialog.dismiss之后立马prgDialog.show.

这就是它没有出现的原因。

编辑:添加下面的代码而不是关闭,这应该在 3 秒后删除对话框

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

       @Override
       public void onFinish(){
             prgDialog.dismiss();
       };
 }.start();
于 2012-09-01T05:01:44.600 回答
0

你好 Tapan 实际上你必须使用“线程”或“可运行”来进行这种操作......所以在你的代码的“其他”部分中放置这个使用线程的修改代码......所以它肯定会为你工作……

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("");
于 2012-09-03T05:26:42.420 回答