0

AsyncTask を使用しています

親を使用してインテントをエラーなしで作成します。

ダイアログを作成する行は、親を ye に解決できないことを示しています。新しいparent.AlertDialog.Builder(これ)

親が存在しないというエラーが表示されますが、同じ方法で親を使用してインテントを呼び出します

コード ブロック プライベート クラス SendTextOperation extends AsyncTask {

      @Override
      protected void onPreExecute() {

        //Update UI here

      }

      @Override
      protected String doInBackground(String... params) {
            // Talk to server here to avoid Ui hanging 
          rt=TalkToServer("http://besttechsolutions.biz/projects/bookclub/login.php");
          return(rt);
      }      

      @Override
      protected void onPostExecute(String result) {  


          if (rt.contains("ok")) 
          {

              Intent i = new Intent(parent, cChat.class);
                startActivity(i);
          }
          else
          {

                 new parent.AlertDialog.Builder(this)
                .setTitle("Game Over")
                .setMessage("Your time is up, You saved " 
                        +" Million  more people!!")
                .setNeutralButton("Try Again",new DialogInterface.OnClickListener()
                {
                    public void onClick(DialogInterface dlg, int i)
                    {

                    }} ).show();    

          }
      }

}

iPhone アプリで Web ビューを更新する

私のiPhoneアプリケーションのホームページで、私はWebページを呼び出しています.ユーザーは私のアプリの他のタブからいくつかのアクション(コメントなど)を行うことができます.例:- コメント/いいね! の数を増やす必要があります) ユーザーがホームページを更新すると (上から上にスクロール)、ページは更新されますが、クライアントは自動的に更新したかったので、viewDidAppear メソッドで Web ページをロードしました。 現在の問題は、ユーザーがホームページに戻るたびに更新され、上部から表示されることです(ユーザーが下部のリンクから詳細に移動して戻ってくると、Webページが上部に表示されます)

これを防ぐ方法、または自動更新のためのより良いアイデアはありますか?

4

3 に答える 3

1

非アクティビティから表示AlertDialogするには、現在のアクティビティコンテキストを非アクティビティクラスにクラスに渡す必要がありますSendTextOperation

Constructorfor SendTextOperationas を作成します。

public class SendTextOperation extends AsyncTask<String,Void,String>{
Context context;
    public SendTextOperation(Context context) {
        this.context = context;
    }

      @Override
      protected void onPreExecute() {

        //Update UI here

      }

      @Override
      protected String doInBackground(String... params) {
            // Talk to server here to avoid Ui hanging 
          rt=TalkToServer("http://besttechsolutions.biz/projects/bookclub/login.php");
          return(rt);
      }      

      @Override
      protected void onPostExecute(String result) {  


          if (rt.contains("ok")) 
          {

              Intent i = new Intent(context, cChat.class);
                startActivity(i);
          }
          else
          {

                 new context.AlertDialog.Builder(context)
                .setTitle("Game Over")
                .setMessage("Your time is up, You saved " 
                        +" Million  more people!!")
                .setNeutralButton("Try Again",new DialogInterface.OnClickListener()
                {
                    public void onClick(DialogInterface dlg, int i)
                    {

                    }} ).show();    

          }
      }

}

そして次のように開始SendTextOperation AsyncTaskします:

SendTextOperation sendtxtasyncTask = new SendTextOperation(CurrentActivity.this);
sendtxtasyncTask.execute("");
于 2012-12-19T18:20:04.543 に答える
0

そのクラスが MyActivity という名前のクラス内で宣言されているとしましょう。次に、Dialog を作成するときに、これの代わりに MyActivity.this を使用します。

于 2012-12-19T18:19:46.973 に答える
0

次のように呼び出す必要があるようです。

final AlertDialog.Builder builder = new AlertDialog.Builder(_context);
            builder.setMessage(_context.getString(R.string.error) + ": " + _errorMessage)
                .setTitle(_context.getString(R.string.loginError))
                .setIcon(android.R.drawable.ic_dialog_alert)
                .setCancelable(true)
                .setPositiveButton(_context.getString(R.string.ok), null);

            final AlertDialog alert = builder.create();
            alert.show();

(私自身のサンプルコード)

親がコンテキストの場合、エラーが実行しようとしているように見えますparent.AlertDialog.Builder(this)。ここで、使用する必要があります。new AlertDialog.Builder(parent)

于 2012-12-19T18:20:34.093 に答える