2013-11-27 3 views
1

나는 다음 활동으로 다른 값 (1 또는 2)을 전달하려는 스위치 버튼이 있습니다. 그러나 나는 항상 0을 얻습니다. 어떤 도움이 필요합니까? 다음 활동에서안드로이드 인 텐트는 스위치에서 값을 전달하지 않습니다

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"); 

편집 : 나는 (INPUT5) 다음 활동에 값을 보내려고합니다,하지만 난 startActivity를 추가하면 (intentx) 스위치의 내부; 다음 버튼을 누를 때마다 즉시 이동합니다. 원하는대로 버튼 (buttonForward)을 누르십시오. 코드의

나머지 :

당신은 수신기 내부의 Intent (& intentx intenty)의 로컬 인스턴스를 만들
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

내가 그것을 PLS startActivty (의도)입니다 breakeposints –

+0

에서 먼저 확인 변경하지 않을 생각 당신의 IsChecked 값을 확인; 그는 청취자를 클릭 buttonForward 기능? 어떻게 다음 활동을 시작하셨습니까? – Hulk

+0

@BhanuSharma 어떻게 해결할 수 있습니까? – user3041073

답변

2

가 (난 당신이 리스너 내부 startActivity() 전화 표시되지 않습니다). 전달 된 Extras은 수신자 이외의 지역에서 사용하는 사본이 아닌 startActivity()으로 로컬 사본에만 적용됩니다. 다음 활동에서 다른 키입니다 double input5 = bundle.getDouble("IFValue");를 사용하는 동안 당신은 intentx.putExtra("IFvalue",input5);

를 사용하는

: Extra 키를 사용하는 경우

업데이트 1

문자의 경우는 문제.

업데이트 2 내가 (INPUT5) 다음 활동에 값을 보내려하지만,

내가 startActivity를 추가하면 (intentx) 스위치의 내부; 그런 다음 바로 거기에 간다 내가 원하는대로 다음 단추 (buttonForward)를 누를 때가 아 닙니다.

그런 다음 전체 Activity (onCreate() 전에 정의한 다음 스위치 리스너에서 Activity을 시작하지 않지만, 하나의 Intent 인스턴스에 대한 Extra를 추가로 하나의 Intent 인스턴스가 필요합니다 :

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

및 t에서 :

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

다음 스위치에서 다음 수신기를 변경할

//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라고 생각합니다. 스위치 범위 밖으로 startActivity를 호출하는 것 같습니다. – axierjhtjz

+0

사실, 스위치 범위 밖으로 startActivity를 호출 했으므로 다음과 같이 추가했습니다. startActivity (intentx); putExtra를 괴롭히지 만 여전히 2가 아닌 0을 제공합니까? – user3041073

+0

IFvalue는 대소 문자와 같이 IFValue가 아닙니다 (일반적인 실수) :) –

관련 문제