EditTextのString値をスレッドのメソッド(channel.basicpublishメソッド)に渡そうとしています。私は、Edittext.gettext()のようなメソッド "basicpublish"でtostringやグローバル変数を宣言して(上のオーバーライド)、ローカル変数に渡す方法を試してきましたが、エラー。私もバンドル/インテントを試みましたが、何も私のために働いていません(エラーを出します)。プレーンな文字列(Message = "HelloRabbitmq")を渡しているので、次のコードが動作します。だから私はどのようにスレッドの中にある "basicpublish"にedittextから文字列を渡すことができますか?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