2017-05-08 2 views
-2

私はサーバーから値を取得して共有設定に保存し、文字列に取り込みますが、値が空であれば誰でも何が起こっているのか分かりません。チャンネルとリンクの値を比較する方法文字列。 editor.commit();後のコードの下に使用する 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; 
} 

}

+0

が空であるか、または任意の値がある、あなたの 'link'値をチェック! –

+0

あなたはlogcatのウェブレスポンスでサーバからの値が得られます –

+0

あなたの共有プリファレンスをあなたのスレッド内の行の後に書く link = response.toString(); –

答えて

1

これを試してください: -

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; 
} 
+0

私は今、リンク値はチャネルの格納値と比較して変更し、更新する –

0

試してください: -

editor.apply(); 
+0

これは即座に保存し、それをすばやく使用します。 –

0

はこれを試してください。

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; 
    } 
    } 

は、あなたが任意の場所からそれらを呼び出すことができ、機能はそれを得るために好み&を保存するために作る場合。

+0

getPreferencesEditor(context)は解決できません。 –

+0

と言っています。リンクの値がチャネルの値と比較して変更され、更新された場合、私は値と1つの提案を得ることができます。 –

関連する問題