使用 putExtra 传递数据并在 onClick 中使用

Posted

技术标签:

【中文标题】使用 putExtra 传递数据并在 onClick 中使用【英文标题】:pass data using putExtra and use it in onClick 【发布时间】:2020-12-06 21:56:18 【问题描述】:

我写了以下代码:

public class HoursActivity extends AppCompatActivity

    public String name;
    public String number;
    public String date;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hours);
        Bundle extras = getIntent().getExtras();

        //if (extras != null) 
            name = extras.getString("name");
            number = extras.getString("number");
            date = extras.getString("date");
        //
        final int hour = 9;
        //final int minute = 0;
        for (int i = 1; i <= 10; i++) 
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.MATCH_PARENT,
                    LinearLayout.LayoutParams.WRAP_CONTENT);
            Button btn = new Button(this);
            btn.setId(hour);
            final int id_ = btn.getId();
            btn.setText(hour + i +":00");
            LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linearLayout);
            linearLayout.addView(btn, params);
            final Button btn1 = ((Button) findViewById(id_));
            btn1.setOnClickListener(new View.OnClickListener() 
                @RequiresApi(api = Build.VERSION_CODES.O)
                public void onClick(View view) 
                    Toast.makeText(view.getContext(),
                            date + name + number, Toast.LENGTH_SHORT)
                            .show();
                
            );
        
    

这段代码创建了 10 个按钮,当我单击一个按钮时,我想打印从上一个活动中获得的数据。于是,我写了如下代码:

            name = extras.getString("name");
            number = extras.getString("number");
            date = extras.getString("date");

我为每个按钮编写了这段代码:

public void onClick(View view) 
                    Toast.makeText(view.getContext(),
                            date + name + number, Toast.LENGTH_SHORT)
                            .show();
                

问题是字符串 date + name + number 只为第一个按钮打印。 我哪里做错了?

【问题讨论】:

您应该在btn 上设置点击监听器。取消btn1 For each button I wrote this code: 您不必重复。我们已经看到了。 谢谢你,成功了:) 【参考方案1】:

创建意图:

Intent i = new Intent(MainActivity.this, SecondActivity.class);
AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete);
String getText=textView.getText().toString();

//Create the bundle
Bundle bundle = new Bundle();

//Add your data to bundle
bundle.putString(“getText”, getText);

//Add the bundle to the intent
i.putExtras(bundle);

//Fire that second activity
startActivity(i);

然后转到您的第二个活动,从包中检索您的数据:

 //Get the bundle
    Bundle bundle = getIntent().getExtras();
    
    //Extract the data…
    String stuff = bundle.getString(“stuff”); 

【讨论】:

以上是关于使用 putExtra 传递数据并在 onClick 中使用的主要内容,如果未能解决你的问题,请参考以下文章

使用 putExtra 传递 ArrayList<Object> 数据

安卓数据传递之---putextra与putextras

Android 中使用bundle.putExtra实现Activity之间的参数传递

使用Intent传递对象

android开发:想用putExtra和getStringExtra来实现数据传递,怎么用?

Activity的基础知识(下)