EditText의 String 값을 스레드의 메서드 인 "channel.basicpublish"에 전달하려고합니다. Edittext.gettext()와 같은 메소드 "basicpublish"에서 여러 가지 방법을 시도해 보았습니다. tostring 또는 전역 변수를 선언하고 (override) 위의 변수를 지역 변수에 전달하지만 다른 한편으로는 빈 문자열을 얻습니다. 오류. 나는 또한 번들/의도를 시도했지만 아무것도 나를 위해 일하고있다 (오류를 준다). 일반 문자열 (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