有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java微调器值未从一个活动传递到另一个活动

ViewToken。类别:

    spinnerGenre = (Spinner) findViewById(R.id.spinnerGenres);
    spinnerGenre1 = (Spinner) findViewById(R.id.spinner);

    docname = spinnerGenre1.getSelectedItem().toString();
    session = spinnerGenre.getSelectedItem().toString();

    next=(Button)findViewById(R.id.button4);
    next.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent next=new Intent(ViewToken.this,Tokens.class);
            next.putExtra("docname", docname.toString());
            next.putExtra("session", session.toString());
            startActivity(next);
        }
    });

代币。阶级

    Intent i2 = getIntent();
    final String docname = i2.getStringExtra("docname");
    final String session = i2.getStringExtra("session");

ViewToken中的微调器值。类不会传递给令牌。阶级


共 (4) 个答案

  1. # 1 楼答案

    getSelectedItem()的调用应该在onClick侦听器中进行,以便它获得所选的最新值

    因此onClick()方法将是:

    @Override
    public void onClick(View v) {
        docname = spinnerGenre1.getSelectedItem().toString();
        session = spinnerGenre.getSelectedItem().toString();
        Intent next=new Intent(ViewToken.this,Tokens.class);
        next.putExtra("docname", docname);
        next.putExtra("session", session);
        startActivity(next);
    }
    

    getSelectedItem()的调用很可能是在选择任何内容之前进行的,因此,在意图中的值put()不正确

  2. # 2 楼答案

    int positionOfSelectedDataFromSpinner;
    iv.putExtra("position", positionOfSelectedDataFromSpinner);
    

    创建一个新方法

    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                    positionOfSelectedDataFromSpinner= i;
                }
    
                @Override
                public void onNothingSelected(AdapterView<?> adapterView) {
    
                }
            });
    

    在第二个活动中

    int positionToShowToSpinner = iv.getIntExtra("position",0);
    spinner.setSelection(positionToShowToSpinner);
    
  3. # 3 楼答案

    在ViewToken中更改此选项。阶级

    next.putExtra("docname", docname);
    next.putExtra("session", session);
    

    您可以在令牌中执行以下操作。阶级

    Bundle extras = getIntent().getExtras();
    String docname = extras.getString("docname");
    String session = extras.getString("session");
    
  4. # 4 楼答案

    在发送之前从微调器获取值

    next.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            docname = spinnerGenre1.getSelectedItem().toString();
            session = spinnerGenre.getSelectedItem().toString();
    
            Intent next=new Intent(ViewToken.this,Tokens.class);
            next.putExtra("docname", docname.toString());
            next.putExtra("session", session.toString());
            startActivity(next);
        }
    });