【问题标题】:Displaying a NumberPicker value to another activity's NumberPicker向另一个活动的 NumberPicker 显示 NumberPicker 值
【发布时间】:2017-09-19 23:05:09
【问题描述】:

该应用程序包含两个活动,FirstScreenSecondScreenFirstScreen 包含一个 NumberPicker np1 和一个按钮 toSecondScreen。按下按钮toSecondScreen 会将应用程序转移到活动SecondScreen,其中还包含一个NumberPicker np1sc

我试图实现的是从FirstScreen 的NumberPicker np1 中选择值并将其显示到SecondScreen 的NumberPicker np2

到目前为止,我尝试过的方法似乎使用不正确。下面给出了代码以及相应的错误消息。

FirstScreen.java

public class FirstScreen extends AppCompatActivity {

    Button toSecondScreen;

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

        final NumberPicker np1 = (NumberPicker) findViewById(R.id.NP1);
        np1.setMinValue(0);
        np1.setMaxValue(5);
        np1.setWrapSelectorWheel(true);

        Bundle localBundle = new Bundle();
        localBundle.putInt("NumPicker2Val", Integer.valueOf(np1.getValue()));
        Intent localIntent = new Intent(this, SecondScreen.class);
        localIntent.putExtras(localBundle);


    toSecondScreen.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent myIntent = new Intent(v.getContext(), SecondScreen.class);
            startActivityForResult(myIntent, 0);
        }
    });
    }
}

对于第二个活动,

    SecondScreen.java

public class SecondScreen extends AppCompatActivity {

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

        final NumberPicker np1sc = (NumberPicker) findViewById(R.id.NP1SC);
        np1sc.setMinValue(0);
        np1sc.setMaxValue(5);
        np1sc.setWrapSelectorWheel(true);

        String string1 = getIntent().getStringExtra("NumPicker2Val");
        np1sc.setDisplayedValues(string1);
    }
}

使用setDisplayedValues(string1) 方法给我一个消息:setDisplayedValues() in NumberPicker cannot be applied to (java.lang.String) 我不知何故理解它给出的错误,但我不知道如何正确使用这些方法了。

【问题讨论】:

    标签: java android android-intent methods numberpicker


    【解决方案1】:

    setDisplayedValues() 方法接受字符串数组(API 看here),所以你需要将string1 转换为字符串数组并传递它,如下所示:

    np1sc.setDisplayedValues(new String[] {string1});//pass string array
    

    【讨论】:

    • 好的,我试试这个。也感谢您的信息:)
    • 我认为这不是 OP 想要做的。我认为他们只是想在第二个Activity 中设置 selected 值,而不是显示值。
    • 是的,这就是我想要做的,但我现在有点困惑。设置选定值,从显示选定值到第二个活动的数字选择器有什么区别?
    • 我试过这个方法,np1sc.setDisplayedValues(new String[] {string1}); ,但按下按钮后,应用程序不断停止并退出,并显示一条 logcat 消息threadid=1: thread exiting with uncaught exception (group=0x4164ac80)
    • 对不起,我刚刚看了一下 NumberPicker 的文档。您在 screen1 中使用 int 值是正确的,但在 screen2 中,您必须再次从 extras 中获取该值作为 int 值并使用 np1sc.setValue(value) 设置 int 值。不要使用setDisplayValues() 方法。
    猜你喜欢
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 2012-12-15
    相关资源
    最近更新 更多