2016-05-11 5 views
0

私はthingspeakからデータを受信し、スイッチの状態をチェック状態からチェック状態に変更するか、またはその逆に切り替える必要があります。
これは私のコードですが、動作しません。ただテキストを設定できますが、状態を変更することはできません。
私を助けてください!ウィジェットの切り替え状態をチェックからチェック解除に変更する方法は?

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     button = (Button) findViewById(R.id.button); 

     myswitch1 = (Switch) findViewById(R.id.switch1); 

     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Thread t = new Thread(new Runnable() { 
        @Override 
        public void run() { 
         postdata2(); 
        } 
       }); 
       t.start(); 
       now_da1.setText(get_da1); 
       if(get_dk1 == "1") { 
         myswitch1.setChecked(False); 
       } 
       else if (get_dk1 =="0") { 
         myswitch1.setChecked(True); 
       } 
      } 
     }); 

     myswitch1.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
       @Override 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
        if (isChecked) { 
         t1 = "1"; 
        } else { 
         t1 = "0"; 
        } 
       } 
      }); 

     public void postdata2() { 
     HttpRequest mReq = new HttpRequest(); 
     get_t1 = mReq.sendGet("https://thingspeak.com/channels/106453/field/1/last"); 

     get_da1 = get_t1.substring(0, 2); 
     get_dk1 = get_t1.substring(3, 3); 
     Log.d(myGet, get_dk1); 
    } 

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

答えて

0

それを確認するためにオフにして、myswitch1.setChecked(true);このmyswitch1.setChecked(false);を使用しています。

ハッピーコーディング:)

+0

ありがとうございました!私はこれを試みたができない – Nth2294

0

常に代わりオブジェクト参照を比較==を用いる値を比較equals()方法を使用する2つStringsの値を比較します。例えば

:彼らは同じオブジェクトを参照していないので、

String first = "1"; 
String second = "1"; 

first == secondはfalseを返します。ただし、2つのStringsの値が同一であるため、first.equals(second)はtrueを返します。

あなたはこれで条件を交換してくださいすることができます

if (get_dk1.equals("1")) { 
    myswitch1.setChecked(false); 
} else if (get_dk1.equals("0")) { 
    myswitch1.setChecked(true); 
} 
+0

ありがとう!私はすぐに試しましたが...それは動作しません:(それは発表しました:java.lang.NullPointerException:ヌルオブジェクトリファレンスで仮想メソッド 'boolean java.lang.String.equals(java.lang.Object)'を呼び出そうとしました。 – Nth2294

+0

これは、変数がまだnullであることを比較する* get_dk1 *の時点で、 'else 'を' postdata2() 'メソッドに移動して、' equals() 'を呼び出すときに変数が設定されていることを知ることができますそれはここで 'NullPointerExceptions'の詳細を見つけることができます:http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do-i-fix-it –

+0

私はandroid.util.AndroidRuntimeException:アニメーターはLooperスレッドでのみ動くかもしれないので、退屈なので、私は一週間中にしようとしました。 :( – Nth2294

関連する問題