java—无法从一个类中获取int值到另一个类:AndroidStudio

368yc8dk  于 2021-07-03  发布在  Java
关注(0)|答案(3)|浏览(331)

我对安卓还不太熟悉。我想得到一个int值 id (动态生成的按钮的id)来自类 MainPage 进入课堂 Note 单击按钮时。但它的价值 id 总是在 Note 班级。
以下是总结代码:
主页类:

public class MainPage extends AppCompatActivity {
    public int id;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        for (int j=0; j<allnotes.size(); j++) {
            //generating buutons          
            final Button preview_text = new Button(this);
            preview_text.setId(j)         
            preview_text.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    //getting id of the clicked button
                    id=v.getId();
                    startActivity(new Intent(MainPage.this, Note.class));

                }
            });
        }
    }
}

注解类:

public class Note extends AppCompatActivity {

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

        MainPage obj=new MainPage();
        int id=obj.id

        View parentLayout = findViewById(android.R.id.content);
        Snackbar mySnackbar = Snackbar.make(parentLayout,Integer.toString(id) , 10000);
        mySnackbar.show();
    }

在snackbar消息中, id 总是零。

eoigrqb6

eoigrqb61#

我们可以通过intent实现这一点,因为android intent是在活动、内容提供商、广播接收器、服务等组件之间传递的消息。
在本例中,我们可以通过viaputextra将v.getid()发送到note.java

intent.putExtra("view_id",v.getId());

并通过使用接收note.java中的值

getIntent().getIntExtra("view_id", 0);
4dc9hkyq

4dc9hkyq2#

在这里,我在您的代码中实现了@riccully answer。
主页.java

preview_text.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        //getting id of the clicked button
        id = v.getId();
        Intent intent = new Intent(MainPage.this, Note.class);
        intent.putExtra("id_value", id);
        startActivity(intent);
    }
});

注解.java

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

    int id = getIntent().getIntExtra("id_value", 0);

    View parentLayout = findViewById(android.R.id.content);
    Snackbar mySnackbar = Snackbar.make(parentLayout, Integer.toString(id), 10000);
    mySnackbar.show();
}
6rqinv9w

6rqinv9w3#

您需要将id添加到用于启动note活动的意图中。您可以使用intent.putextra(…)来实现这一点,并在note中通过getintent().getintextra(…)检索它

相关问题