2014-02-10 2 views
0

으로 업데이트하십시오. 클라이언트 응용 프로그램에서 내 서버 ID를 업데이트 할 수 없습니다. 메뉴 탭 (3 도트)을 사용하여 화면을 당겨 IP를 업데이트 할 수 있지만 업데이트하지는 않습니다. 난 그냥 다시메뉴 막대에서 서버 IP를

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setServerIP(); 
    setContentView(R.layout.main);  

new Thread(new ClientThread()).start(); 
} 

private void setServerIP() { 
    serverIP = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getString("SERVER_IP", "192.168.21.16"); 

    try { 
     serverAddr = InetAddress.getByName(serverIP); 
     getActionBar().setSubtitle("Broadcasting touch events to "+serverIP+":4444"); 
    } catch(Exception e) { 

    } 
} 
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch(item.getItemId()){ 
     case R.id.action_settings: 
      Intent n = new Intent(this,Prefs.class); 
      startActivityForResult(n, 0); 

    } 
    return super.onOptionsItemSelected(item); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    setServerIP(); 

    super.onActivityResult(requestCode, resultCode, data); 
} 

class ClientThread implements Runnable { 

    @Override 
    public void run() { 

     try { 
      InetAddress serverAddr = InetAddress.getByName(serverIP); 
      socket = new Socket(serverAddr, SERVERPORT); 
      connected = true; 
     } catch (UnknownHostException e1) { 
      e1.printStackTrace(); 
     } catch (IOException e1) { 
      e1.printStackTrace(); 
     } 

    } 

} 
} 

답변

0

연결을 통해 실행되는 작업 표시 줄이 다시 그려야 할 때 알 수 있도록 invalidateOptionsMenu()setServerIp()의 메뉴를 무효화 시도하는 IP 업데이트에서 문자열을 필요가 있다고 생각합니다.

관련 문제