【问题标题】:Using NumberPicker to change TextView on a different activity [android]使用 NumberPicker 在不同的活动上更改 TextView [android]
【发布时间】:2017-09-22 02:31:03
【问题描述】:

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

这是我的 Java 的相关部分,来自 activity1

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

还有来自activity2的我相关的java

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

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

【问题讨论】:

    标签: java android textview numberpicker


    【解决方案1】:

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

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

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

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


    编辑:

    使用您的代码是这样的: - 第一活动

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

    【讨论】:

      猜你喜欢
      • 2012-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-05
      • 1970-01-01
      相关资源
      最近更新 更多