入れ方わかる人いますAlertDialog
かAsyncTask
?WebService を使用するアプリケーションがあります。そのため、アプリケーションを起動するために IP アドレスを入力しました。現在、デフォルトのIPアドレスを入力する必要がありAlertDialog
、それを使用して変更します。設定-> IPの挿入のように。今のところ、アプリケーションが起動するたびにAlertDialog
最初に作成したいと思います。その解決策には、を使用する必要があると思いますAsyncTask
。しかし、私がそれを実装する方法では、使用に関していくつかの問題がありますAsyncTask
以下は、AsyncTask forr ip を使用しないアプリケーションの場合を示しています。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// set the ip address
ip = "124.23.204.135";
//asyncTask for updating gamer's information
new GamerWorker().execute(ip);
//refreshing GUI
intent = new Intent(this, BroadcastService.class);
私はAsyncTask
GamerWorker()
WebService からの情報を更新するために使用しています。また、GUI を一新する意向も表明しています。以下は、私が実装したときのショーAsyncTask
ですAlertDialog
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// set the ip address
LayoutInflater inflater = getLayoutInflater();
final View dialoglayout = inflater.inflate(
R.layout.alertdialog_add_gamer, null);
// start creating the dialog message
Builder builder = new AlertDialog.Builder(this);
builder.setView(dialoglayout);
builder.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
// get the editText from the dialog's view
EditText text = (EditText) dialoglayout
.findViewById(R.id.et_gamerIpOrWebAdress);
// disable all input views
ip = text.getText().toString();
}
});
builder.setNegativeButton("No",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
// cancels the dialog
dialog.dismiss();
}
});
new MyTask(builder).execute();
//refreshing GUI
intent = new Intent(this, BroadcastService.class);
}
そして、そのためAsyncTask
に私は宣言しました:
public class MyTask extends AsyncTask<Void, Void, Void> {
private Builder builder;
public MyTask(Builder builder) {
this.builder = builder;
}
public void onPreExecute() {
AlertDialog dialog = builder.create();
dialog.show();
}
public Void doInBackground(Void... unused) {
return null;
}
public void onPostExecute(Void unUsed) {
new GamerWorker().execute(ip);
}
}
実際にはAlertDialog
、私はこの回答に従っています: Androidでアクティビティを開始する前に進行状況ダイアログを表示する方法は?
私の問題は、私が置くときです:
//refreshing GUI
intent = new Intent(this, BroadcastService.class);
preExecuteでは動かないのですが、onCreateに入れるとnullポインタになってしまいます。誰でもこの問題を解決する方法を知っていますか?AlertDialog
アプリケーションの起動時に使用できるように
EDIT : インテントを preExecute に入れることができます。インテントを に変更するだけintent = new Intent(MainActivity.this, BroadcastService.class);
です。しかし、それは問題を解決できないようです。ダイアログは作成されておらず、常に null ポインターを取得していました。