Как получить Экстра из предыдущего действия, чтобы установить различные намерения кнопки? - PullRequest
1 голос
/ 10 января 2012

Я хочу передать дополнительную информацию своему NextActivity, чтобы кнопка в NextActivity имела разные намерения. Я успешно справляюсь с этим, чтобы просматривать различные макеты, но не знаю, как это сделать на кнопке. Вот код, который имеет рабочий переключатель setContentView;

public class ContentViewer extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Bundle bundle = this.getIntent().getExtras();
    int chooser = bundle.getInt("Layout");

    switch(chooser) {
    case 0:
        setContentView(R.layout.about);
        break;

    case 1:
        setContentView(R.layout.contact);
        break;

    case 2:
        setContentView(R.layout.contentviewer);
        break;

    case 3:
        setContentView(R.layout.contact);
        break;

    case 4:
        setContentView(R.layout.contact);
        break;

    case 5:
        setContentView(R.layout.contact);
        break;

    case 6:
        setContentView(R.layout.contact);
        break;

    case 7:
        setContentView(R.layout.contact);
        break;

    case 8:
        setContentView(R.layout.contact);
        break;

    case 9:
        setContentView(R.layout.contact);
        break;
    }
}
}

Теперь в этих макетах есть кнопка с одинаковым идентификатором, но я хочу, чтобы она имела разные Intents, основанные на разных случаях (например, setContentView выше).

UPDATE Theres MainActivity, у него есть просмотр списка, который проходит дополнительно. При щелчке по элементу в виде списка он открывает NextActivity (как в коде). NextActivity имеет макет с кнопкой. Теперь, в зависимости от того, какой элемент был нажат на MainActivity, кнопка будет иметь различные намерения. Например, если в MainActivity был нажат элемент 1, откройте NextActivity, переопределите кнопку, чтобы иметь намерение 1. Если в элементе MainActivity 2 был нажат, откройте кнопку NextActivity с переопределением, чтобы иметь намерение 2 ВМЕСТО намерения 1. Достаточно ясно?

Ответы [ 2 ]

3 голосов
/ 10 января 2012

Похоже, вы уже на правильном пути.

Первое, что вам нужно сделать, это убедиться, что у вашей кнопки есть идентификатор в xml android:id="@+id/my_button"

Затем после вашей логики setContent получите ссылку на эту кнопку:

Button myButton = (Button)findViewById(R.id.my_button);

Затем вы можете добавить прослушиватель onClick для этой кнопки для обработки пользовательских кликов:

myButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // Your switch logic should go here!
            }
        });

В функции onClick вы можете добавить свою логику переключения, у вас может быть отдельное дополнение для этого, но это зависит от вас, вы можете сделать то же самое, что вы делали выше, но вызывать другое намерение вместо установки содержимого.

2 голосов
/ 10 января 2012

Нечто подобное вам может понадобиться:

 int valueFromBundle = get value from bundle here...; 

 Button ipButton = (Button)findViewById(R.id.my_button);

 ipButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               switch(chooser) { 
                case 0:
                Intent i = new Intent(fromActivity.class, toActivity.class);
                startActivity(i);
                break;
                case 1:
                Intent i = new Intent(fromActivity.class, toActivity.class);
                startActivity(i);
                break;
                etc..,



             }

            }
        });
...