共享首选项值 returns 为空

Shared preference value returns empty

我正在从服务器获取值并保存到共享首选项并将其检索到字符串中但是值是空的任何人都可以告诉我怎么了吗wrong.and关于如何比较通道中的值的任何建议和link 字符串。 logcat

public class MainActivity extends Activity {
SharedPreferences sharedpreferences;
EditText name;
EditText email;
public static final String mypreference = "mypref";
public static final String Name = "nameKey";
public static final String Email = "emailKey";
private static String NAMESPACE = "http://telview360/";
private static String URL = "http://54.179.134.139/viView360Service/WebService.asmx?WSDL";
private static String SOAP_ACTION = "http://telview360/ImageDetails";
private static String METHOD_NAME = "ImageDetails";
String link;
String channel;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final Thread networkThread = new Thread() {
        @Override
        public void run() {
            try {
                SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
                SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
                envelope.setOutputSoapObject(request);
                HttpTransportSE ht = new HttpTransportSE(URL);
                ht.call(SOAP_ACTION, envelope);
                final SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
                link = response.toString();

                Log.d("Web response", ":" + link);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    };
    networkThread.start();
    try {
        Thread.currentThread().sleep(100);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }


    sharedpreferences = getSharedPreferences(mypreference,
            Context.MODE_PRIVATE);

    SharedPreferences.Editor editor = sharedpreferences.edit();
    editor.putString(Name, link);
    editor.commit();
    Log.d("Saved value",":"+editor.commit());



    channel = sharedpreferences.getString(Name, "");
    Log.d(" value",":"+channel);

}



@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

}

尝试在 editor.commit(); 之后使用以下代码:-

editor.apply();

试试这个;

 public class MainActivity extends Activity {
    SharedPreferences sharedpreferences;
    EditText name;
    EditText email;
    public static final String mypreference = "mypref";
    public static final String Name = "nameKey";
    public static final String Email = "emailKey";
    private static String NAMESPACE = "http://telview360/";
    private static String URL = "http://54.179.134.139/viView360Service/WebService.asmx?WSDL";
    private static String SOAP_ACTION = "http://telview360/ImageDetails";
    private static String METHOD_NAME = "ImageDetails";
    String link;
    String channel;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final Thread networkThread = new Thread() {
            @Override
            public void run() {
                try {
                    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
                    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
                    envelope.setOutputSoapObject(request);
                    HttpTransportSE ht = new HttpTransportSE(URL);
                    ht.call(SOAP_ACTION, envelope);
                    final SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
                    link = response.toString();
                    UpdateLinkValue(link);
                    Log.d("Web response", ":" + link);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        };
        networkThread.start();
        try {
            Thread.currentThread().sleep(100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    channel = getPrefLink(MainActivity.this);
    Log.d(" value",":"+channel);
    }

    public void UpdateLinkValue(String link){
          String prevLink = getPrefLink(MainActivity.this);
          if(!prevLink.lenght() > 0 || !prevLink.equals(link))
              setPrefLink(MainActivity.this,link);
    }
    public void setPrefLink(Context context, String link) {
            SharedPreferences.Editor editor = getPreferencesEditor(context);
            editor.putString(mypreference , link);        
            editor.apply();
            editor.commit();
        }

public SharedPreferences getPreferences(Context context) {
        return context.getSharedPreferences(mypreference, Context.MODE_PRIVATE);
    }

    public String getPrefLink(Context context) {          
            return getPreferences(context).getString(mypreference , "");
        }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
    }

如果您创建函数来保存偏好并获取它,您可以从任何地方调用它们。

试试这个:-

public class MainActivity extends Activity {
SharedPreferences sharedpreferences;
EditText name;
EditText email;
public static final String mypreference = "mypref";
public static final String Name = "nameKey";
public static final String Email = "emailKey";
private static String NAMESPACE = "http://telview360/";
private static String URL = "http://54.179.134.139/viView360Service/WebService.asmx?WSDL";
private static String SOAP_ACTION = "http://telview360/ImageDetails";
private static String METHOD_NAME = "ImageDetails";
String link;
String channel;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final Thread networkThread = new Thread() {
        @Override
        public void run() {
            try {
                SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
                SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
                envelope.setOutputSoapObject(request);
                HttpTransportSE ht = new HttpTransportSE(URL);
                ht.call(SOAP_ACTION, envelope);
                final SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
                link = response.toString();

sharedpreferences = getSharedPreferences(mypreference,
            Context.MODE_PRIVATE);

    SharedPreferences.Editor editor = sharedpreferences.edit();
    editor.putString(Name, link);
    editor.commit();
    Log.d("Saved value",":"+editor.commit());



    channel = sharedpreferences.getString(Name, "");
    Log.d(" value",":"+channel);

                Log.d("Web response", ":" + link);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    };
    networkThread.start();
    try {
        Thread.currentThread().sleep(100);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }




}



@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}