2013-11-27 19 views
1

我有一個開關按鈕,我想從中傳遞不同的值(1或2)到下一個活動進行計算。但我總是得到0.任何幫助?Android的意圖不會傳遞開關的值

Switch mySwitch = (Switch) findViewById(R.id.edit_home); 

    // set the switch to ON 
    mySwitch.setChecked(true); 
    // attach a listener to check for changes in state 
    mySwitch.setOnCheckedChangeListener(new Switch.OnCheckedChangeListener() { 

    public void onCheckedChanged(CompoundButton buttonView, 
    boolean isChecked) { 

    if (isChecked) { 

    double input5 = 2; 
    Intent intentx=new Intent(MainActivity.this,Main2Activity.class); 
    intentx.putExtra("IFValue",input5); 
      startActivity(intentx); 
    Toast.makeText(getApplicationContext(), "Home field is important advantage", 
    Toast.LENGTH_SHORT).show(); 

    } else { 

    double input5 = 1; 
    Intent intenty=new Intent(MainActivity.this,Main2Activity.class); 
    intenty.putExtra("IFValue",input5); 
      startActivity(intentx); 
    Toast.makeText(getApplicationContext(), 
    "Home field is not advantage", Toast.LENGTH_SHORT).show(); 
    } 

    } 
    }); 

在接下來的活動:

 Bundle bundle = getIntent().getExtras(); 
    double input5 = bundle.getDouble("IFValue"); 

編輯:我想發送值(輸入5)到下一個活動,但如果我加入startActivity(intentx)開關的內部;然後立即去那裏,而不是當我按下按鈕(buttonForward),因爲我想。

休息代碼:

Switch mySwitch = (Switch) findViewById(R.id.edit_home); 

    // set the switch to ON 
    mySwitch.setChecked(true); 
    // attach a listener to check for changes in state 
    mySwitch.setOnCheckedChangeListener(new Switch.OnCheckedChangeListener() { 

    public void onCheckedChanged(CompoundButton buttonView, 
    boolean isChecked) { 

    if (isChecked == true) { 

    double input5 = 2; 
    Intent intentx=new Intent(MainActivity.this,Main2Activity.class); 
    intentx.putExtra("IFValue",input5); 
    startActivity(intentx); 
    Toast.makeText(getApplicationContext(), "Home field is important advantage", 
    Toast.LENGTH_SHORT).show(); 

    } else { 

    double input5 = 1; 
    Intent intenty=new Intent(MainActivity.this,Main2Activity.class); 
    intenty.putExtra("IFValue",input5); 
    startActivity(intenty); 
    Toast.makeText(getApplicationContext(), 
    "Home field is not advantage", Toast.LENGTH_SHORT).show(); 
    } 

    } 
    }); 



    Button buttonForward = (Button) findViewById(R.id.buttonToMain2); 
    buttonForward.setOnClickListener(new OnClickListener(){ 


     @Override 
     public void onClick(View arg0) { 

    EditText edit_team = (EditText) findViewById(R.id.edit_team); 
    EditText edit_form = (EditText) findViewById(R.id.edit_form); 

    EditText edit_import = (EditText) findViewById(R.id.edit_import); 

    String ekipa1 = edit_team.getText().toString(); 

    final double input2 = Double.valueOf(qualityControl.getProgress()); 
    final double input3 = Double.valueOf(edit_form.getText().toString()); 
     final double input4 = Double.valueOf(ratingBar.getRating()); 

    final double input6 = Double.valueOf(edit_import.getText().toString()); 

    Intent intent=new Intent(MainActivity.this,Main2Activity.class); 
    intent.putExtra("Value",input2); 
    intent.putExtra("Value1",input3); 
    intent.putExtra("Value2",input4); 

    intent.putExtra("Value4",input6); 
    intent.putExtra("team1", ekipa1); 
    startActivity(intent); 








     } 



    });  
+0

檢查你的價值器isChecked我認爲這不會改變從PLS breakeposints –

+0

哪裏是startActivty(意向)首先檢查它;功能?你如何開始下一個活動? – Hulk

+0

@BhanuSharma我怎麼能解決它? – user3041073

回答

2

您正在創建Intent(intentx & intenty)的監聽器裏的本地實例(我不知道你叫startActivity()在監聽器裏)。通過的Extras僅適用於本地副本,而不適用於您在startActivity()以外使用的本地副本。

您正在使用intentx.putExtra("IFvalue",input5);

,而在接下來的活動中,你正在使用double input5 = bundle.getDouble("IFValue");這是一個不同的密鑰:使用Extra鍵時

更新1

字符的大小寫很重要。

更新2

我想發送值(輸入5)到下一個活動,但如果我添加 startActivity(intentx)開關的內部;然後去那裏imediately 而不是當我按下按鈕(buttonForward),因爲我想。

然後,你將需要只有一個Intent比如在整個ActivityonCreate()之前定義它,那麼就不要開始從開關聽者Activity,但增加了Extra爲單Intent實例:

Intent intent = new Intent(MainActivity.this,Main2Activity.class); // Class level variable 

然後更改開關聽者以下:

// Intent intentx=new Intent(MainActivity.this,Main2Activity.class); remove this 
intent.putExtra("IFValue",input5); 

和在叔他buttonForward點擊收聽:

//Intent intent=new Intent(MainActivity.this,Main2Activity.class); remove this 
intent.putExtra("Value",input2); 
intent.putExtra("Value1",input3); 
intent.putExtra("Value2",input4); 

intent.putExtra("Value4",input6); 
intent.putExtra("team1", ekipa1); 
startActivity(intent); 
+0

我認爲@Mohamed_AbdAllah它是正確的。看起來你正在從switch範圍中調用startActivity。 – axierjhtjz

+0

的確,我在開關範圍內調用startActivity,所以我添加了: startActivity(intentx);在putExtra下面,但它仍然提供0,而不是2? – user3041073

+0

IFvalue不是IFValue作爲案件事宜(常見錯誤):) –