我想将EditText的字符串值传递给线程中的方法“channel.basicpublish”。我已经在像edittext.gettext()。tostring或声明全局变量(以上覆盖)并将它们传递给局部变量的方法中尝试了许多方法,但另一方面,我得到一个空字符串,尽管没有错误。我也试过捆绑/意图,但没有任何工作对我来说(给出错误)。下面的代码将工作,因为我传递一个纯字符串(Message =“HelloRabbitmq”)。那么我怎样才能将edittext中的字符串传递给线程中的“basicpublish”呢?将Edittext传递给线程
public class HandlerActivity extends Activity {
/** Called when the activity is first created. */
TextView tv;
EditText etv;
String QUEUE_NAME="bye";
String EXCHANGE_NAME="logs";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView) findViewById(R.id.out);
etv = (EditText) findViewById(R.id.out2);
etv.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
// If the event is a key-down event on the "enter" button
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
// Perform action on key press
Toast.makeText(HandlerActivity.this, etv.getText(), Toast.LENGTH_SHORT).show();
String Kamran = etv.getText().toString();
return true;
}
return false;
}
});
final Handler handler=new Handler();
final Runnable r=new Runnable()
{
public void run()
{
tv.append("Hello");
}
};
handler.postDelayed(r, 1000);
Thread thread = new Thread()
{
@Override
public void run() {
try {
while(true) {
sleep(1000);
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("192.168.2.3");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.exchangeDeclare(EXCHANGE_NAME, "fanout", true);
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
String message = "Hello Rabbitmq";
channel.basicPublish("logs",QUEUE_NAME, null, message.getBytes());
channel.close();
connection.close();
handler.postDelayed(r, 1000);
}
}
catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
};
thread.start();
}
}
非常感谢,我的模拟器不响应此代码。但是类变量完成了这项工作,谢谢! – user1047222 2012-02-24 14:29:11