2017-03-26 16 views
2

私はAndroidアプリケーション開発の初心者です。私はちょうど1つのアクティビティからスイッチの値を取得し、それを別のアクティビティに表示しようとしています。しかし、出力として「null」を取得しています。私を助けてください。1つのアクティビティからスイッチ値を取得して他のアクティビティに表示する方法

Question1.java

public class Question1Activity extends AppCompatActivity { 
Switch swi; 
Button back1, next1; 
String value = "NO"; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_question1); 
    swi = (Switch) findViewById(R.id.Switch_Ques_1); 
    back1 = (Button) findViewById(R.id.Button_back1); 
    next1 = (Button) findViewById(R.id.Button_next1); 
    swi.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

     @Override 
     public void onCheckedChanged(CompoundButton buttonView, 
            boolean isChecked) { 

      if (isChecked) { 
       swi.setText("YES"); 
       value="YES"; 
       swi.setTextColor(Color.GREEN); 
      } else { 
       swi.setText("NO"); 
       value="NO"; 
       swi.setTextColor(Color.RED); 
      } 

     } 
    }); 
    back1.setOnClickListener(new View.OnClickListener(){ 
     public void onClick(View view){ 
      Intent intent = new Intent(Question1Activity.this,LoginActivity.class); 
      startActivity(intent); 
     } 
    }); 
    next1.setOnClickListener(new View.OnClickListener(){ 
     public void onClick(View view){ 
      Intent intent = new Intent(Question1Activity.this,Question2Activity.class); 
      intent.putExtra("Ans1",swi.isChecked()); 
      startActivity(intent); 
     } 
    }); 
} 
} 

Question3.java

public class Question3Activity extends AppCompatActivity { 
TextView t1; 
private SQLiteDatabase database; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_question3); 
    t1 = (TextView) findViewById(R.id.result); 
    Intent intent = getIntent(); 
    String s1 =(String) intent.getStringExtra("Ans1"); 
    String s2 = intent.getStringExtra("Ans2"); 
    t1.setText(s1+" "+s2); 
} 
} 
+0

エラーログを置くことはできますか? – FarshidABZ

+0

@Mike M.私はすでに 'intent.getBooleanExtra()'を使ってみました。しかし、2番目のパラメータとして与えた値と同じ値を返します。これは 'intent.getBooleanExtra(" Ans1 "、false)'です。結果は** false **でした – Sriram

答えて

1

書き込みなど:

String r; 
      if(swi.isChecked()) 
       r = "true"; 
      else 
       r= "false"; 
      intent.putExtra("Ans1",r); 

代わりの

intent.putExtra("Ans1",swi.isChecked()); 
0

Question3.javaでは、渡す値はスイッチ値ですが、getStringExtraのインテントメソッドが取得されています。

オプション1:.toStringメソッドを使用して、スイッチウィジェットから値を変換してStringの値を取得します。

オプション2(推奨):Question3クラスでString値を取得する設定が既にあるので、value文字列を渡して次のアクティビティで取得してください。

希望します。

関連する問題