【问题标题】:how to pass spinner selected value to onCreate() section in the same activity?如何将微调器选择的值传递给同一活动中的 onCreate() 部分?
【发布时间】:2020-04-29 07:32:12
【问题描述】:

我想制作一个基于一些 Edittexts 和两个微调器收集数据的应用程序。然后,通过单击按钮 在 TextView 中显示所有字符串数据。我知道这可能很简单,但我想知道如何在微调器中获取所选项目并将它们显示在其余值附近。 '''

Spinner shift, permit;

EditText TextHere, TrainNumber, SignalPerson, NavganPerson, DriverPerson;

TextView BigText;

Button SaveButton;

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

    shift=(Spinner)findViewById(R.id.shift_spinner);
    permit=(Spinner)findViewById(R.id.permission_spinner);
    TextHere=(EditText)findViewById(R.id.text_here);
    TrainNumber=(EditText)findViewById(R.id.train_number);
    SignalPerson=(EditText)findViewById(R.id.signal_person);
    NavganPerson=(EditText)findViewById(R.id.navgan_person);
    DriverPerson=(EditText)findViewById(R.id.driver_person);
    SaveButton=(Button) findViewById(R.id.save_btn);
    BigText=(TextView)findViewById(R.id.text_text);

    ArrayAdapter ShiftSelect = ArrayAdapter.createFromResource(
            this,
            R.array.shifts,
            R.layout.support_simple_spinner_dropdown_item
    );
    shift.setAdapter(ShiftSelect);
    shift.setOnItemSelectedListener(this);

    ArrayAdapter PermissionSelect = ArrayAdapter.createFromResource(
            this,
            R.array.permissions,
            R.layout.support_simple_spinner_dropdown_item
    );
    permit.setAdapter(PermissionSelect);
    permit.setOnItemSelectedListener(this);

    final String TN = TrainNumber.getText().toString();

    final String TH = TextHere.getText().toString();

    final String SP = SignalPerson.getText().toString();

    final String NP = NavganPerson.getText().toString();

    final String DP = DriverPerson.getText().toString();

    SaveButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });

}


@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

    Spinner spinner = (Spinner) parent;

    if (spinner.getId()==R.id.shift_spinner){
        String SHIFT = parent.getSelectedItem().toString();
    }
    if (spinner.getId()==R.id.permission_spinner){
        String PER = parent.getSelectedItem().toString();
    }
}

@Override
public void onNothingSelected(AdapterView<?> parent) {
}

'''

我想将从 public void onItemSelected 中选择的项目传递给 onCreate 方法部分以在 txetview 中显示它。 谢谢你。

【问题讨论】:

    标签: android spinner oncreate


    【解决方案1】:

    试试这个。

    TextView textView;
    Spinner spinner;
    String SEL_VALUE;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        spinner=(Spinner)findViewById(R.id.shift_spinner);
        textView=(TextView)findViewById(R.id.textView);
        SEL_VALUE="";
    
        // Create adapter here
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(this);
    
    }
    
    
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    
        String sel_val = spinner.getSelectedItem().toString();
        // Setting selected value to textView.
        SEL_VALUE = sel_val;
        textView.setText(sel_val);
    
    }
    
    @Override
    public void onNothingSelected(AdapterView<?> parent) {
    }
    

    【讨论】:

      【解决方案2】:

      我希望这是你要求的

      Spinner shift, permit;
      
      EditText TextHere, TrainNumber, SignalPerson, NavganPerson, DriverPerson;
      
      TextView BigText;
      
      Button SaveButton;
      String SHIFT,PER;
      
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
      
          shift=(Spinner)findViewById(R.id.shift_spinner);
          permit=(Spinner)findViewById(R.id.permission_spinner);
          TextHere=(EditText)findViewById(R.id.text_here);
          TrainNumber=(EditText)findViewById(R.id.train_number);
          SignalPerson=(EditText)findViewById(R.id.signal_person);
          NavganPerson=(EditText)findViewById(R.id.navgan_person);
          DriverPerson=(EditText)findViewById(R.id.driver_person);
          SaveButton=(Button) findViewById(R.id.save_btn);
          BigText=(TextView)findViewById(R.id.text_text);
      
          ArrayAdapter ShiftSelect = ArrayAdapter.createFromResource(
                  this,
                  R.array.shifts,
                  R.layout.support_simple_spinner_dropdown_item
          );
          shift.setAdapter(ShiftSelect);
          shift.setOnItemSelectedListener(this);
      
          ArrayAdapter PermissionSelect = ArrayAdapter.createFromResource(
                  this,
                  R.array.permissions,
                  R.layout.support_simple_spinner_dropdown_item
          );
          permit.setAdapter(PermissionSelect);
          permit.setOnItemSelectedListener(this);
      
          final String TN = TrainNumber.getText().toString();
      
          final String TH = TextHere.getText().toString();
      
          final String SP = SignalPerson.getText().toString();
      
          final String NP = NavganPerson.getText().toString();
      
          final String DP = DriverPerson.getText().toString();
      
          SaveButton.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                  BigText.setText(SHIFT+" "+PER);
              }
          });
      
      }
      
      @Override
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
      
          Spinner spinner = (Spinner) parent;
      
          if (spinner.getId()==R.id.shift_spinner){
              SHIFT = parent.getSelectedItem().toString();
          }
          if (spinner.getId()==R.id.permission_spinner){
              PER = parent.getSelectedItem().toString();
          }
      }
      
      @Override
      public void onNothingSelected(AdapterView<?> parent) {
      }
      

      【讨论】:

      • 感谢您的帮助。我知道如何设置文本,但问题是,如果我在这里使用“SHIFT”和“PER”(如您所写 - BigText.setText(SHIFT+" "+PER); - 将出现错误,这意味着 SHIFT 和 PER 是未定义。但是,它们填充在我发送的底部)
      【解决方案3】:

      试试这个。

      TextView textView;
      Spinner spinner;
      
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
      
          spinner=(Spinner)findViewById(R.id.shift_spinner);
          textView=(TextView)findViewById(R.id.textView);
      
          // Create adapter here
          spinner.setAdapter(adapter);
          spinner.setOnItemSelectedListener(this);
      
      }
      
      
      @Override
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
      
          String sel_val = spinner.getSelectedItem().toString();
          // Setting selected value to textView.
          textView.setText(sel_val);
      
      }
      
      @Override
      public void onNothingSelected(AdapterView<?> parent) {
      }
      

      【讨论】:

      • 你是对的。这是正确的代码。但是如何在 onCreate 部分的顶部使用 sel_val。可以从onItemSelected传过来吗??
      • 当然。只需为所选项目创建一个全局变量并将所选值设置为 onItemSelected 内的全局变量..
      • 我已经发布了一个新的答案。 @ErfanFaramarzi
      猜你喜欢
      • 2018-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      相关资源
      最近更新 更多