2012-12-11 61 views
0

我希望你能提供幫助。使用吐司配BufferedReader

基本上我想發送什麼「BufferedReader」讀到一個吐司,但我從來沒有用過吐司之前,似乎無法讓我的頭圍繞它。

正如您在下面看到的,BufferedReader是「In」。

在此先感謝。

代碼:

package com.smarte.smartipcontrol; 

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter; 
import java.io.PrintWriter; 
import java.net.InetAddress; 
import java.net.Socket; 
import java.net.UnknownHostException; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.view.View; 

public class IPControl extends Activity { 

private Socket socket; 
private static final int REDIRECTED_SERVERPORT = 32; 
public PrintWriter out; 
public BufferedReader in; 
public String data; 
public Object pd; 
Intent intent; 
String actu_ip; 
String textStatus; 

public void getModel(View view) { 
    try { 
     out.println("[m\r\n"); 
     //System.out.print("root\r\n"); 
     while(!in.ready()); 
     textStatus = readBuffer(); 

    } catch(IOException e) { 
     e.printStackTrace(); 
    } 
} 


//get the message from intent 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Intent intent = getIntent(); 
    actu_ip = intent.getStringExtra(IPEntry.ACTUALSMARTIP); 
    setContentView(R.layout.act_ipcontrol); 

    try { 
     new AsyncAction().execute(); 
    } catch(Exception e) { 
     e.printStackTrace(); 
    } 
} 

private class AsyncAction extends AsyncTask<String, Void, String> { 
    protected String doInBackground(String... args) { 
     try { 
      InetAddress serverAddr = InetAddress.getByName(actu_ip); 
      socket = new Socket(serverAddr, REDIRECTED_SERVERPORT); 
      OutputStreamWriter osw = new OutputStreamWriter(socket.getOutputStream()); 
      BufferedWriter bw = new BufferedWriter(osw); 
      out = new PrintWriter(bw, true); 
      in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
      while (! in .ready()); 
      readBuffer(); 
      out.println("root\r\n"); 
      while (! in .ready()); 
      readBuffer(); 
      out.println("root\r\n"); 
      while (! in .ready()); 
      String msg = ""; 
      while (in .ready()) { 
       msg = msg + (char) in .read(); 
      } 
     } catch (UnknownHostException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     return null;//returns what you want to pass to the onPostExecute() 
    } 

    protected void onPostExecute(String result) { 

     //results the data returned from doInbackground 

     IPControl.this.data = result; 

    } 
} 

private String readBuffer() throws IOException { 
    String msg = ""; 

    while(in.ready()) { 
     msg = msg + (char)in.read(); 
    } 
    //System.out.print(msg); 
    if(msg.indexOf("SNX_COM> ") != -1) return msg.substring(0, msg.indexOf("SNX_COM> ")); 
    else if(msg.indexOf("SCX_COM> ") != -1) return msg.substring(0, msg.indexOf("SCX_COM> ")); 
    else return msg; 
} 
} 
+1

那麼,你有麻煩有用的文本從你的BufferedReader的,或者是你無法建立一個吐司?如果你的答案是「兩者」,我建議你開始縮小:將問題分解爲更小的步驟並獨立解決,只有這樣才能將它們集成在一起。 (這將成爲整個開發生涯的一般主題。) – mah

+0

@mah嗨,麻煩,我的問題是Toast部分。我想發送任何緩衝讀取器讀取Toast。我將在App中稍後分類出有用的數據。 –

+0

在這種情況下,請參閱codeMagic的答案,以及http://developer.android.com/guide/topics/ui/notifiers/toasts.html – mah

回答

2

吐司只顯示與

Toast.makeText(context, message to display, Toast.LENGTH_SHORT).show();

在屏幕上的消息在你IPControl活動,把這個地方就像你onCreate,你會看到什麼吐司

Toast.makeText(IPControl.this, "Thanks for stopping by!", Toast.LENGTH_LONG).show();

onPostExecute()嘗試

Toast.makeText(IPControl.this, result, Toast.LENGTH_LONG).show();

+0

+1的單行Toast示例,這似乎正是OP是需要的。我會建議儘管你在這個例子之後編輯了內容,因爲它與OP在代碼中提出或暗示的任何內容無關,因此只是混淆了答案。 – mah

+0

@mah謝謝你,我很抱歉,但我不知道你指的是什麼。如果你更好地解釋,我會這樣做,如果它令人困惑。我提供了存儲我認爲是OP想要做的數據的方法。 – codeMagic

+0

我的意思是一切從「如果你想存儲數據,這不是你想要的」;數據存儲永遠不會出現,我也看不出有什麼理由推斷它是相關的,所以我認爲你應該刪除對數據庫的引用,因爲它與這個問題沒有關係/有用,所以應該刪除對數據庫的引用。 – mah