0

どちらもファイルをインターネットに送信するアクティビティがいくつかあります。

各アクティビティで同じプロシージャが呼び出されるように、投稿プロシージャを別のクラス ファイルに入れたいと思います。

呼び出しアクティビティのコンテキストをメインの AsyncTask メソッドに渡します。このメソッドは、次に preExecute、doInbackground、Postexecute を呼び出します。

AsyncTask に渡されたコンテキストを使用して構築された AlertDialog が、サーバーから返されたメッセージを表示する postexecute メソッドにあり、OnClickListener を使用してそれを却下します。ボタンをクリックすると、アラート ダイアログは閉じられますが、基になるアクティビティ画面は閉じられません。

私は次のようないくつかの異なるfinish()の組み合わせを試しました:-

dialog.cancel();
finish();

dialog.cancel();
MyActivity ma = new MyActivity();
ma.this.finish();

ただし、何もアクティビティを閉じません。

私は何を間違っていますか、そしてそれを閉じるために何をする必要がありますか?

これまでのところ、それを機能させる唯一の方法は、まったく同じコードを両方のアクティビティに埋め込むことですが、これは非効率的でエラーの影響を受けやすいようです。

どんな助けでも大歓迎です。

4

1 に答える 1

1

呼び出しアクティビティのコンテキストをメインの AsyncTask に渡します

Activity のコンテキストを渡すだけでなく、Activity インスタンスをクラスを拡張するクラスに渡す必要があります。これAsyncTaskは、finish メソッドが fromActivityではなく class にあるためです。次のContextように試してください。

public class Networkasynctask extends AsyncTask<...>{

Activity activity;
Context context;

public Networkasynctask(Context context,Activity activity,...){
  this.activity=activity;
  .....
}
....
}

Activity から Activity インスタンスを渡します。

Networkasynctask networktaskobj=new Networkasynctask(this);

Networkasynctask.this.activity.finish()Activity 以外のクラスから Activity を閉じるために使用するようになりました

于 2013-04-11T18:49:34.610 に答える