Как назвать одно и то же действие (одинаковое расположение) с разными данными? - PullRequest
2 голосов
/ 05 сентября 2011

Я новичок в области Android. Я разрабатываю приложение меню ресторана, я создал список, который показывает названия элементов в ресторане. когда я выбираю какой-либо один элемент в виде списка, он запускает другое действие, он содержит текстовое поле с подробным описанием выбранного элемента. аналогично, когда я выбираю другие элементы, он должен запускать ту же операцию, но данные должны быть об этом выбранном элементе, как этого добиться? если я использую базу данных sqlite для источника данных.

Ответы [ 4 ]

2 голосов
/ 05 сентября 2011

Вам нужно передать значения onItemClick:

Intent intent = new Intent(context, CalledActivity.class);
        intent.putExtra(key, value);
        startActivity(intent);

Если вы хотите вернуть некоторые данные из вызванной Activity, тогда вы можете использовать startActivityForResult () как:

Intent intent = new Intent(context, CalledActivity.class);
        intent.putExtra(key, value);
        startActivityForResult(intent, requestCode);

В вызываемой активностиВы можете установить данные как:

setResult(RESULT_OK, intent);

Примечание. Здесь вы устанавливаете значение намеренно и передаете его в setResult ().

Вернувшись к вызову Activity, вы можете получить данные, переопределив:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode == RESULT_OK){
            //Get data from Intent "data" and do your task here....
        }
    }

Примечание: вы можете передавать значения примитивных типов данных через Intent, а если вы хотите передать другие типы, тогда у вас естьиспользовать Bundle следующим образом.

Bundle data = new Bundle();
        data.putIntArray(key, value);

//same way you can set other values.......
//Now set this Bundle value to Intent as you do for primitive type....

Intent intent = new Intent(context, CalledActivity.class);
        intent.putExtra(data);
        startActivity(intent);

Получение данных в Activity:

//For primitive values:
DataType var_name = getIntent().getExtras().get(key);

//For Bundle values:
Bundle var_name = getIntent().getExtras().getBundle(key);
0 голосов
/ 05 сентября 2011

Зависит от того, чего вы пытаетесь достичь. Предположим, вы хотите отправить позицию элемента списка, по которому щелкают, а затем по методу клика отправить идентификатор операции с намерением

  public void onItemClick(AdapterView<?> arg0, View view, int position,
                long id) {
            //listView.getItemIdAtPosition(position);
            // TODO Auto-generated method stub
          Intent i=new Intent(MyActivity.this,NewActivity.class);
          i.putExtras("position",""+position);
          startActivity(i);


        }

Аналогично, еслиВы хотите отправить данные, должны работать соответственно

0 голосов
/ 05 сентября 2011

Вы захотите использовать дополнительные Bundle из Intent, например,

Предположим, у вас есть MenuListActivity, который показывает меню в виде списка, иMenuItemActivity, который показывает один элемент меню более подробно.

В вашем MenuListActivity.onListItemClick() вы хотите передать идентификатор элемента, по которому щелкнули, вашему MenuItemActivity:

public void onListItemClick(ListView list, final View view, int position, long id) {
    final Intent intent = new Intent(this, MenuItemActivity.class); // from -> to
    intent.putExtra(MenuItemActivity.ITEM_ID, id); // extra arguments: the menu item ID
    startActivity(intent);
}

MenuItemActivity у вас будет константа для идентификации пункта меню (используется выше):

public static final String ITEM_ID = "item_id";

...

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Bundle extras = getIntent().getExtras();
    long menuItemId = extras.getLong(ITEM_ID);

    // fetch your menu item from database, using ID
0 голосов
/ 05 сентября 2011

Используйте намеренные дополнения для достижения этой цели.Вы можете перенести данные в свою деятельность, используя intent.putExtra («KEY», VALUE).В процессе получения вы получаете дополнительные функции, вызывая getIntent (). GetExtras ();который возвращает Bundle с дополнениями, которые вы добавили в вызове.

...