簡體   English   中英

如何從Java中的另一個類獲取變量?

[英]How can I get a variable from another class in Java?

我想在類MainActivity類型中獲取id_categories變量,以便在類ListFood中的方法LoadListFoodbyId( int id )中使用。

MainActivity.java

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv = (ListView) findViewById(R.id.list_store_View);
        LoadCategories();
        lv.setOnItemClickListener(new CategoriesClickListener());
}
    // The click listener for ListView in Store List
    private class CategoriesClickListener implements
            ListView.OnItemClickListener {

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

            Categories item = cateAdapter.getItem(position);
            Intent itent = new Intent(getApplicationContext(), ListFood.class);
            itent.putExtra("item", item);
            int id_categories = item.getId(); //i want to get this variable
            String log = "ID: " + id_categories;
            startActivity(itent);
            Log.d("ID: ", log);

        }
    }

ListFood.java

public class ListFood extends Activity {
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list_dish);
        LoadListFoodbyId(4); //use variable in here
}
    public void LoadListFoodbyId(int i) {
        DataApdapter mDbHelper = new DataApdapter(this);
        mDbHelper.createDatabase();
        mDbHelper.open();
        ArrayList<Food> listFoodById = mDbHelper.getAllFoodById(i);
        listFoodAdapter = new ListFoodArrayAdapter(this, R.layout.list_dish,
                listFoodById);
        lv.setAdapter(listFoodAdapter);

        mDbHelper.close();

    }

我嘗試通過ListFood在類mainActivity中調用方法LoadListFoodbyId(int i):

ListFood lf = new ListFood(); 

lf.LoadListFoodbyId (id_categories)

並嘗試另一種方法是在MainActivity類ListFood中使用的類MainActivity id_categories中獲取變量:

MainActivity main = new MainActivity(); 
LoadListFoodbyId (main.getId ()), 

但都沒有成功。

  1. 您將其添加到意圖。

     Categories item = cateAdapter.getItem(position); Intent itent = new Intent(getApplicationContext(), ListFood.class); itent.putExtra("item", item); int id_categories = item.getId(); //i want to get this variable String log = "ID: " + id_categories; itent.putExtra("id_categories", id_categories) //you can call your variable whatever you want, I have called it "id_categories" for convenience. startActivity(itent); Log.d("ID: ", log); 
    1. 無論何時需要,都可以在ListFood類中打開它。

    Bundle b = getIntent().getExtras(); int id_categories = bundle.getInt("id_categories");

在您的MainActivity類中定義變量id_categories示例:

public class MainActivity {

 private int id_categories;
  ...

更改此行代碼

 int id_categories = item.getId();

 id_categories = item.getId();

並在類MainActivity中創建一個函數

public int getIdcategories(){
    return id_categories;
}

把它放在主要活動的意圖中,就像這樣

itent.putExtra("id", item.getId());

並在列表食物中檢索它像這樣

int id=getIntent().getIntExtra("id",0); // 0 is default value if id is not found in intent

聲明id_categories作為public static int id_categoriesMainActivity的onCreate之前。 然后,您可以在任何類中訪問它作為MainActivity.id_categories

暫無
暫無

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

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