0

文字列 ( socket.out("back"); ) を socket.java に送信するメイン アクティビティがあります。

public class socket { 

public static void out(String out){

    /*
     final String PREFS_NAME = "SAVEDIP";
 final String PREF_IP = "ip";
 String ip = null;
 SharedPreferences pref = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
 ip = pref.getString(PREF_IP, "");
   */



 try {
  Socket client = new Socket("192.168.1.2",8000);   
  PrintWriter output = new PrintWriter(client.getOutputStream(), true);
  BufferedReader in = new BufferedReader(new   
      InputStreamReader(client.getInputStream()));
  output.println(out);

  output.close();
  in.close();
  client.close();
  } catch (UnknownHostException e) {
   Log.e("TAG", "UnknowHostExeption");
   e.printStackTrace();
  } catch (IOException e) {
   Log.e("TAG", "IOExeption");
   e.printStackTrace();
  }
}
  }

IPアドレスを変数「ip」に変更したい(コメント欄)。IP を SharedPreferences で保存しましたが、読み取ることができません。コメントのコードを試しましたが、Eclipse は「MODE_PRIVATE」の部分に下線を引き、「MODE_PRIVATE は変数に解決できません」と言っています。

私の問題を解決する方法はありますか?

4

4 に答える 4

1

ソケットクラス内ではコンテキスト参照がありません。最も簡単な解決策は、コンテキストオブジェクトをoutメソッドに渡すことです。

public static void out(String out, Context context){

このコンテキストオブジェクトを使用すると、次のようなSharedPreferencesを取得できます。

SharedPreferences pref = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);

このIPアドレスは、アプリケーション全体で一意であると思います。そうすれば、独自のApplicationクラスを作成して、そこにグローバルなものを保存できます。

于 2013-03-11T13:52:04.863 に答える
0

これを試して:

SharedPreferences pref = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
于 2013-03-11T13:27:34.960 に答える
0

次のように使用できます。

 SharedPreferences pref = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);

また

 SharedPreferences pref = getSharedPreferences(PREFS_NAME, 0);
于 2013-03-11T13:27:56.430 に答える
0
in class A


SharedPreferences app_preferences=PreferenceManager.getDefaultSharedPreferences(ProfileloginActivity.this);
                     SharedPreferences.Editor editor = app_preferences.edit();
                    // String text = textBox.getText().toString();
                     editor.putString("key",username);

                     editor.commit();

クラスBで

 SharedPreferences app_preferences = PreferenceManager.getDefaultSharedPreferences(this);
        String username = app_preferences.getString("key", "null");
于 2013-03-11T13:32:49.860 に答える