使用NumberPicker在不同的活动上更改TextView [android]

时间:2017-09-22 02:31:03

标签: java android textview numberpicker

我正在尝试使用上一个活动的数字选择器更改一个活动的textview值。任何帮助,将不胜感激。

以下是来自activity1

的Java的相关部分
public class activity_game extends AppCompatActivity {

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

        final NumberPicker fizzNumberPkr = (NumberPicker)findViewById(fizzNumberPicker);
        fizzNumberPkr.setValue(3);
        fizzNumberPkr.setMinValue(1);
        fizzNumberPkr.setMaxValue(20);
        fizzNumberPkr.setWrapSelectorWheel(true);
        final NumberPicker buzzNumberPkr = (NumberPicker)findViewById(buzzNumberPicker);
        buzzNumberPkr.setValue(5);
        buzzNumberPkr.setMinValue(1);
        buzzNumberPkr.setMaxValue(20);
        buzzNumberPkr.setWrapSelectorWheel(true);

    }

    public void toActivityPlay (View view) {
        Intent toActivityPlay = new Intent(this, activity_play.class);
        toActivityPlay.putExtra("fizzNumber", fizzNumber);
        toActivityPlay.putExtra("buzzNumber", buzzNumber);
        startActivity(toActivityPlay);
    }

我的相关java来自activity2

public class activity_play extends AppCompatActivity {

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

        TextView fizzNumberText = (TextView)findViewById(R.id.fizzNumber);
        fizzNumberText.setText(getIntent().getExtras().getString("fizzNumber"));

        if(getIntent().hasExtra("fizzNumber")) {
            fizzNumber = getIntent().getIntArrayExtra();
        } else {
            throw new IllegalArgumentException("Error: Fizz number not found");
        }

如果有任何我可能没有发布的相关代码,请告诉我,我会编辑我的帖子。

1 个答案:

答案 0 :(得分:0)

现在有些想法来传达两个活动。 您可以在第一个Activity中创建方法setValuePicker()/ getValueFromPicker(),并在另一个Activity中调用getValue()。

public void setValuePicker(Parameter value){
    number = value;
}

public Parameter getValuePicker(){
    return value;
}

如果变量已设置为全局,则只需要实现getValue()方法。

如果有一天你想使用片段需要实现回调。

<强> 编辑:

使用您的代码是这样的: - FirstActivity

public class MainActivity extends AppCompatActivity {

    private int number;
    public static final String FIZZ_TAG = "fizz_numer";

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

        final NumberPicker picker = (NumberPicker) findViewById(R.id.numberPicker);
        picker.setMinValue(0);
        picker.setMaxValue(10);
        picker.setValue(5);
        picker.setWrapSelectorWheel(true);

        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                number = picker.getValue();
                Intent intent = new Intent(getApplicationContext(), Main2Activity.class)
                        .putExtra(FIZZ_TAG,number);
                startActivity(intent);
            }
        });
    }
}
  • 第二个活动需要是这样的。 。 。 。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main2);
    
      int s = getIntent().getIntExtra(MainActivity.FIZZ_TAG,0);
    
      TextView textView = (TextView) findViewById(R.id.text_test);
      textView.setText(String.format("%s = %d","number ",s));
    
    }