1

我有一个自定义对话框。其中一个editText id在那里,我正在通过editText读取输入,将输入放入一个字符串。此代码后跟一个线程(子)来处理一个 url。我想在提到的线程中使用这个字符串。但是在我输入editText之前线程被调用了。如何动态使用线程内用户输入中的相同文本?提前致谢..

公共无效 onClick(查看 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 回答
0

我不确定我是否理解,但这句话“我如何动态使用线程内用户输入的相同文本?”听起来你想你的EditText

public class TempWatcher implements TextWatcher {

    @Override
    public void afterTextChanged(Editable s) {
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) 
    {   
                 // you can update something here
    }
}

EditText但是,如果您在单击时检查您的有效值Button并仅启动您的Threadthen,它应该做您想做的事情。如果这不起作用,请澄清您的问题并说明您从哪里开始Thread以及如何实施

于 2013-07-24T17:39:21.767 回答