1

カスタムダイアログがあります。そこに editText id があるので、editText を介して入力を読み取り、入力を文字列に入れます。このコードの後に​​、1 つの URL を処理するスレッド (サブ) が続きます。言及されたスレッドでこの文字列を使用したいと思います。しかし、editText に入力する前にスレッドが呼び出されています。スレッド内のユーザー入力から同じテキストを動的に使用するにはどうすればよいですか? 前もって感謝します..

public void onClick(View v) {

     switch (v.getId()) 
        {
        case R.id.i1:
            MyDevice.getInstance().currentUserImageId=R.drawable.jerry1;
            MyDevice.getInstance().userName="You";
            MyDevice.getInstance().facebook=0;


            this.finish();
            break;



        case R.id.i2:
            MyDevice.getInstance().currentUserImageId=R.drawable.chaplin1;
            MyDevice.getInstance().userName="You";
            MyDevice.getInstance().facebook=0;
            this.finish();
            break;



        case R.id.i3:
            MyDevice.getInstance().currentUserImageId=R.drawable.budy;
            MyDevice.getInstance().userName="You";
            MyDevice.getInstance().facebook=0;

            this.finish();
            break;

        case R.id.facebook:


            final Dialog dialog = new Dialog(this);
            dialog.setContentView(R.layout.usernamefbdialog);
            dialog.setTitle("Enter Facebook Username");


            Button dialogButton = (Button) dialog.findViewById(R.id.done);
            // if button is clicked, close the custom dialog
            dialogButton.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) 
                {
                     EditText edit=(EditText)dialog.findViewById(R.id.username);
                     text=edit.getText().toString();

                        dialog.dismiss();

                }
            });



            dialog.show();





            Thread thread = new Thread(new Runnable()
            {
                @Override
                public void run() 
                {
                    try
                    {                           

                    MyDevice.getInstance().bitmap=getUserPic(text);
                    MyDevice.getInstance().facebook=1;
                    ImageView facebookImg=(ImageView) findViewById(R.id.facebookimg);
                    facebookImg.setImageBitmap(MyDevice.getInstance().bitmap);  

                    } 

                    catch (Exception e) 
                    {
                        e.printStackTrace();
                    }
                }
            });

            thread.start(); 


                break;  









         }

}
4

2 に答える 2

1

基本的にやりたいことは、ボタンクリックイベント内からスレッドを実行することです。そのようにして、テキストを取得した後に実行されます。以下の変更されたコードを参照してください。String に発生するイベントは、この順序で発生します。1. 文字列を作成します 2. 文字列を編集テキスト文字列と同じに設定します 3. スレッドを開始し、文字列を使用します

        final String theStringYouWantToUseInTheThread = null;       
        Thread thread = new Thread(new Runnable()
        {
            @Override
            public void run() 
            {
                try
                {                           
                //use theStringYouWantToUseInTheThread here
                MyDevice.getInstance().bitmap=getUserPic(text);
                MyDevice.getInstance().facebook=1;
                ImageView facebookImg=(ImageView) findViewById(R.id.facebookimg);
                facebookImg.setImageBitmap(MyDevice.getInstance().bitmap);  

                } 

                catch (Exception e) 
                {
                    e.printStackTrace();
                }
            }
        });
        dialogButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) 
            {
                 EditText edit=(EditText)dialog.findViewById(R.id.username);
                 theStringYouWantToUseInTheThread = edit.getText().toString();
                 thread.start();
                 dialog.dismiss();
            }
        });
        dialog.show();







        thread.start(); 
于 2013-07-24T17:36:33.840 に答える