iT邦幫忙

0

app透過按鈕的點擊傳輸一個值

當我按下按鈕時輸入語音為open,而輸出的結果顯示在textview上,再透過mSend按鈕傳送給電腦顯示1。
當我的textview顯示為open時,透過mSend的按鈕傳出給電腦的值我想預設成1,可是傳到電腦的值則顯示為12345,變成所有的值都傳輸出去,請各位幫幫忙。

//mSend為傳輸的按鈕
mSend.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
                String s1 = "open";
                String s2 = "close";
                String s3 = "love";
                String s4 = "total";
                String s5 = "like";
        if (null != view) {
        TextView textView = (TextView)view.findViewById(R.id.textView);
        String message = textView.getText().toString();
                    //做message與open的字串比對
                    if(s1.equals(message=="open"));
                    {
                        //傳給電腦的值顯示為1
                        sendMessage("1");
                    }
                    if(s2.equals(message=="close"));
                    {
                        sendMessage("2");
                    }
                    if(s3.equals(message=="love"));
                    {
                        sendMessage("3");
                    }
                    if(s4.equals(message=="total"));
                    {
                        sendMessage("4");
                    }
                    if(s5.equals(message=="like"));
                    {
                        sendMessage("5");
                    }

1 個回答

5
海綿寶寶
iT邦超人 1 級 ‧ 2017-11-24 17:20:45

前一個問題如果已經解決了
記得要去選一個對你最有幫助的解答
#有問有選,再問不難

//做message與open的字串比對
if (message.equals(s1)) {
    //傳給電腦的值顯示為1
    sendMessage("1");
} else if (message.equals(s2)) {
    sendMessage("2");
} else if (message.equals(s3)) {
    sendMessage("3");
} else if (message.equals(s4)) {
    sendMessage("4");
} else if (message.equals(s5)) {
    sendMessage("5");
}
看更多先前的回應...收起先前的回應...

原來 Java 要用 equals,
C# string == 會直接比較字串的值。
/images/emoticon/emoticon37.gif

30525107 iT邦新手 5 級 ‧ 2017-11-24 22:25:46 檢舉

https://ithelp.ithome.com.tw/upload/images/20171124/20107254RcQSESzeG6.png
如圖所示我在visual studio裡還是沒辦法顯示1

那個 if 不成立

因為 s1="open", 而 message="open\n" 兩者不相等
所以 if 不成立
也就不會 send 你的 1

你都用中斷點停在那列了
也可以看一下後面綠色的字
就知道為什麼 if 不成立了

30525107 iT邦新手 5 級 ‧ 2017-11-24 23:14:17 檢舉

那該如何把\n給去掉呢,是用message.replace("\n");嗎,這段程式有錯不知如何更改

message 和 s1 的值
都是由你設定的

message 的值是由 TextView 那裡抓來的
就去 TextView 那裡改就可以了

30525107 iT邦新手 5 級 ‧ 2017-11-25 11:16:22 檢舉

我之後將s1改成"open\n"此時s1="open\n"、message="open\n",但還是沒辦法在電腦端輸入1,我在debug模式中輸入語音為open時,手機出現error字串的client side error,但是在一潘的情況下輸入卻能顯示語音結果open。message的open不是自訂的是語音說出的結果顯示在textview上。
排版不好,不好意思還請幫忙謝謝。

//當我要輸入open時,textview顯示client side error
 private void sendMessage(String message) {//我debug這段
// Check that we're actually connected before trying anything
        if (mChatService.getState() != BluetoothChatService.STATE_CONNECTED) {
        Toast.makeText(getActivity(), R.string.not_connected, Toast.LENGTH_SHORT).show();
         return;
    }

// Check that there's actually something to send
if (message.length() > 0) {
// Get the message bytes and tell the BluetoothChatService to write
      byte[] send = message.getBytes();
      mChatService.write(send);
// Reset out string buffer to zero and clear the edit text field
      mOutStringBuffer.setLength(0);
    }
}
//語音輸出的結果
 @Override
public void onResults(Bundle results) {
     Log.i(TAG, "onResults");
     ArrayList<String> matches = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
     String text = "";
     for (String result : matches){
        text += result + "\n";
     }
     mtextView.setText(text);
}
30525107 iT邦新手 5 級 ‧ 2017-11-25 14:19:59 檢舉

感謝大大剛剛問題已解決

小魚 iT邦好手 1 級 ‧ 2017-11-25 16:08:29 檢舉

問題解決的話請標一下 "最佳解答"

我要發表回答

立即登入回答