2013-06-05 2 views
1

Недавно я начал кодирование в Eclipse, и я еще ничего не сделал, так что это более или менее первое приложение. Я пытаюсь сделать мою школу scheudele, это просто: первая активность показывает 5 кнопок, каждая кнопка ведет к новой активности (понедельник - пятница).Как открыть новое действие нажатием кнопки?

Как я могу сделать так, что, когда я нажму на определенную кнопку, появится новая активность (скажем, в понедельник)?

Я уже видел сотни этих вопросов и ответил здесь, но я просто не понимаю. Это бесполезно скопировать & вставить код отсюда, если я все еще не понимаю, что происходит. Я знаю, что мне нужно создать новое намерение и buttonlistener, но я просто не понимаю, зачем и что делать.

Может ли кто-нибудь объяснить это мне настолько подробно, насколько вы можете точно переключиться между действиями с помощью кнопок и как это сделать на самом деле?

у меня есть:

  • MainActivity.java
  • Monday.java
  • 5 кнопок (button1-5)

Так как я бы код button1, чтобы перейти от MainActivity.java на Monday.java?

ответ

1

Начните с добавления android:onClick="onClick" к каждому из элементов XML ваших кнопок. Это заставит ваши кнопки выполнять метод onClick всякий раз, когда на них запускается событие onClick.

Затем в MainActivity классе добавьте следующий метод:

public void onClick(View v) { 
    switch (v.getId()) { 
    case R.id.button1: 
     // Monday 
     Intent intent = new Intent(MainActivity.this, Monday.class); 
     startActivity(intent); 
     break; 
    case R.id.button2: 
     // Tuesday 
     Intent intent = new Intent(MainActivity.this, Tuesday.class); 
     startActivity(intent); 
     break; 
    // the rest of the buttons go here 
    default: Log.e("YourTAG", "Default in onClick hit!"); 
     break; 
    } 
} 

Таким образом, каждый раз есть onClick событие на любом из пяти кнопок, onClick выше метод будет выполняться с аргументом, представляющий View просто нажмите.

Подробности regarging намерения и как они работают here

И, как отметил @Edward, не забудьте добавить свои новые мероприятия в вашем файле AndroidManifest.xml под application элемента, например:

<activity android:name=".Monday" android:label="@string/app_name"></activity> 
+0

Две меры предосторожности: вам необходимо заявить о своей ** активности ** в вашем манифесте; явно называя его в намерении недостаточно. Во-вторых, имейте в виду, что свойство ** android: onClick ** является новым по API 4. Если вы пытаетесь заставить свой код работать в системе Android 1.5, он будет терпеть неудачу. –

+0

Это правильно. Спасибо, что указали на них. – Voicu

+0

Большое вам спасибо! После нескольких часов и часов неудачи я, наконец, сделал это! И самое главное - я действительно чувствую, что понимаю это. Единственная часть этого кода, которую я до сих пор не получаю, - это то, что (View V) ... почему вы объявили View и v ... это единственная часть, которую я не получаю. Спасибо огромное! –

0

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

startActivity(new Intent(YourCurrentActivity.this, Monday.class)); 

Вам придется стрелять другой Intent на каждой кнопке, которая будет создавать соответствующую Activity. Конечно, не забудьте объявить свой Activity s в файле манифеста.

0

OK. Допустим, у вас есть следующая кнопка в вашем файле макета: -

<Button 
    android:id="@+id/my_btn" 
    android:layout_width="55dp" 
    android:layout_height="22dp" 
    android:onClick="goToMonday" // function name which will be in MainActivity.java 
/> 

Теперь в вашей основной деятельности.java: -

public void goToMonday(View v){ 
    Intent monday_intent = new Intent(MainActivity.this, Monday.class); 

    MainActivity.this.startActivity(monday_intent); 
} 

Это способ изменить деятельность.

Смежные вопросы