簡體   English   中英

無法從 class 到另一個 class 獲得 int 值:android 工作室

[英]Cant get an int value from on class to another class : android studio

我對 android 有點陌生。 我想從 class MainPage獲取一個 int 值id (動態生成的按鈕的 id)到 class Note單擊按鈕時。 但是在Note class 中id的值總是變為零。

這是總結代碼:

主頁 class:

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));
                  
                }
            });
        }
    }
}

注釋 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();
    }

在小吃店消息中, id始終為零。

您需要將 id 添加到用於啟動 Note 活動的 Intent。 您可以通過使用 Intent.putExtra(...) 並在 Note 中通過 getIntent().getIntExtra(...) 檢索它

在這里,我在您的代碼中實現了@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();
}

我們可以通過意圖來做到這一點因為 Android 意圖是在活動、內容提供者、廣播接收器、服務等組件之間傳遞的消息。

在我們的例子中,我們可以將 v.getId() 發送到 Note.java,viaputExtra

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

並通過使用接收 Note.java 中的值

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM