【问题标题】:How to pass variable from onClick to another class [duplicate]如何将变量从onClick传递到另一个类[重复]
【发布时间】:2016-02-21 17:25:20
【问题描述】:

我试图将一个名为选择的变量传递给另一个类,但我不知道我应该如何继续这样做,因为它位于 onClick 内部。这是我正在尝试做的一个示例。

public int choice;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //intent for first button
    Button button1= (Button) findViewById(R.id.button1);
    button1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            choice = 1;
            startActivity(new Intent(MainActivity.this,Celeb1.class));
        }
    });
    //intent for second button
    Button button2= (Button) findViewById(R.id.button2);
    button2.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            choice = 2;
            startActivity(new Intent(MainActivity.this,Celeb1.class));
        }
    });

}

在另一个类中,我想检查选择是否等于 1 或 0 并执行一些代码。

【问题讨论】:

标签: java android class onclick


【解决方案1】:

你可以通过这种方式传递变量

Intent intent = new Intent(MainActivity.this,Celeb1.class)
intent.putExtra("choice", 1);
startActivity(intent);

在 Celeb1 类中,您可以通过使用来获取变量

Bundle extras = getIntent().getExtras();
int choice= extras.getInt("choice");

onCreate() 内部

【讨论】:

  • 谢谢,效果很好。
【解决方案2】:
//in main activity    
Intent i=new Intent(getApplicationContext(),Celeb1.class);
    i.putExtra("name","stack");//name is key stack is value
    startActivity(i);


    //In Celeb1 class

    Intent i=getIntent();
    String name=i.getStringExtra("name");

【讨论】:

  • 除了代码之外还需要提供一些解释吗?
【解决方案3】:

不要创建 Intent 实例,而是创建 Intent 对象并将额外的值传递给您的类

选择 = 2;

Intent intent = new Intent(MainActivity.this, Celeb1.class);
intent.putExtra("choice",choice);
startActivity(intent);

就是这样 我是android初学者,希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2020-11-01
    • 2014-01-03
    • 2013-02-08
    • 1970-01-01
    相关资源
    最近更新 更多