Моя цель - получить переменную restpost во втором классе, поэтому ее можно отправить через httppost. Существует уже используемый объект SharedPreferences, который предназначен для пользовательских настроек. Я искал это по меньшей мере 100 раз и проверял каждый соответствующий пост здесь.Проблема с SharedPreferences между классами, изнутри обработчика
Основной вид деятельности содержит следующее:
private final Handler mHandler = new Handler() {
@SuppressWarnings("deprecation")
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MESSAGE_STATE_CHANGE:
if(D) Log.i(TAG, "MESSAGE_STATE_CHANGE: " + msg.arg1);
switch (msg.arg1) {
case BTService.STATE_CONNECTED:
setStatus(getString(R.string.title_connected_to,mConnectedDeviceName));
mConversationArrayAdapter.clear();
break;
... //then...eventually this..
Editor editor = sharedPrefs.edit();
editor.putString("restpost", restpost);
editor.commit();
HttpService sendNow = new HttpService();
sendNow.sendData();
Второй класс ниже.
public class HttpService extends PreferenceActivity{
public void onCreate(Bundle savedInstanceState) {
// super.onCreate(savedInstanceState);
}
public void sendData(){
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
String host = sharedPrefs.getString("host_text", "NULL");
String muser = sharedPrefs.getString("user_text", "NULL");
String mpw = sharedPrefs.getString("pw_text", "NULL");
String maxurl = sharedPrefs.getString("restpost", "NULL");
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(maxurl);
HttpContext localContext = new BasicHttpContext();
HttpResponse response;
try {
response = httpClient.execute(httpPost);
Log.d("Http Response:", response.toString());
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Конечная цель - сделать http-событие во время активного соединения BT. Это основано на примере BluetoothChat, если это помогает. У меня также есть обработчик & приложенная задача для выполнения BT-сообщений несколько раз - не более 1 в минуту.
Вот ошибка:
11-21 09: 08: 30,395: E/AndroidRuntime (5012): java.lang.NullPointerException 11-21 09: 08: 30,395: E/AndroidRuntime (5012): at android.content.ContextWrapper.getSharedPreferences (ContextWrapper.java:160) 11-21 09: 08: 30.395: E/AndroidRuntime (5012): at android.preference.PreferenceManager.getDefaultSharedPreferences (PreferenceManager.java:366) 11- 21 09: 08: 30.395: E/AndroidRuntime (5012): at com.clicsys.motomon.HttpService.sendData (HttpService.java:29) 11-21 09: 08: 30.395: E/AndroidRuntime (5012): at com .clicsys.motomon.MainActivity $ 3.handleMessage (MainActivity.java:467) 11-21 0 9: 08: 30.395: E/AndroidRuntime (5012): at android.os.Handler.dispatchMessage (Handler.java:99) 11-21 09: 08: 30.395: E/AndroidRuntime (5012): at android.os. Looper.loop (Looper.java:137) 11-21 09: 08: 30.395: E/AndroidRuntime (5012): at android.app.ActivityThread.main (ActivityThread.java:4950) 11-21 09:08: 30.395: E/AndroidRuntime (5012): при java.lang.reflect.Method.invokeNative (собственный метод) 11-21 09: 08: 30.395: E/AndroidRuntime (5012): at java.lang.reflect.Method.invoke (Method.java:511) 11-21 09: 08: 30.395: E/AndroidRuntime (5012): at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1004) 11-21 09 : 08: 30.395: E/AndroidRuntime (5012): at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:771) 11-21 09: 08: 30.395: E/AndroidRuntime (5012): at dalvi k.system.NativeStart.main (Native Method)
Спасибо. Могу ли я вызвать метод во втором действии? Это действительно все, что мне нужно. Мне просто нужно сделать Http Post, и я не могу нигде внутри основной деятельности - обратите внимание на мою конечную цель ... – user2752652
Я создал его во внутренний класс, расширяющий AsyncTask. Никаких предпочтений не требуется - отлично работает. Спасибо, что вернул меня обратно ... – user2752652