2013-11-30 4 views
1

Насколько я могу судить, все, что нужно для нажатия кнопки, на месте. Я сбился с толку, поэтому по достоинству оценил бы пару дополнительных глаз.Кнопка Android не реагирует на событие клика/

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

Код

public class HomeActivity extends Activity implements OnClickListener { 

    Button login; 
    Button createProfile; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_home); 

     login   = (Button) findViewById(R.id.loginButton); 
     login.setOnClickListener(this); 

     createProfile = (Button) findViewById(R.id.createProfileButton); 
     createProfile.setOnClickListener(this);   
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.home, menu); 
     return true; 
    } 

    @Override 
    public void onClick(View view) { 

     Intent intent; 
     switch(view.getId()){ 

      case R.id.loginButton: /** Start a new Activity LoginActivity.java */ 
       intent = new Intent(this, LoginActivity.class); 
       this.startActivity(intent); 
       break; 

      case R.id.createProfileButton: /** Start a new Activity About.java */ 
       //intent = new Intent(this, AboutActivity.class); 
       //this.startActivity(intent); 
       break; 
      } 
    } 
} 

расположение HomeScreen

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".HomeActivity" > 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/hello_world" /> 

<Button 
    android:id="@+id/loginButton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true" 
    android:layout_marginBottom="160dp" 
    android:layout_marginRight="51dp" 
    android:text="Login" /> 

<Button 
    android:id="@+id/createProfileButton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@+id/loginButton" 
    android:layout_alignBottom="@+id/loginButton" 
    android:layout_toLeftOf="@+id/loginButton" 
    android:text="createProfile" /> 

Войти Компоновка

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".HomeActivity" > 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="This is the login page!" /> 

Manifest

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.nutrtionintuition" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="18" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.example.nutrtionintuition.HomeActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity 
     android:name=".LoginActivity" 
     android:label="@string/app_name" > 
    </activity> 
</application> 

LoginACtivity

public class LoginActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_home); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.home, menu); 
     return true; 
    } 
} 
+0

В целом это метод 'onClick()'? Поскольку в настоящее время ваш метод 'onClick()' ничего не делает. Определяет только намерение и переключатель. – Sajmon

+1

убедитесь, что свойство clickable не установлено в false в xml. –

+0

Откуда вы знаете, что это не называется? Кстати, узнайте, как использовать отладчик. Это простые ошибки для работы с отладчиком. Попытка кода без отладчика похожа на создание автомобиля только с одним гаечным ключом. Не использовать отладчик делает вещи сложнее для вас. Отладчики сохраняют огромное количество времени и делают все проще. Отладчик найдет золото в вашем саду и единорогах на автостоянке. Написание кода Java Java без использования отладчика приведет к тому, что ваши зубы станут синими, а ваши колени изменят места локтями. Отладка помогает пищеварению и держит ваше дыхание сладким.:) – Simon

ответ

2

В оба классы (HomeActivity и LoginActivity), установить вид контента, как это:

setContentView(R.layout.activity_home); 

Ваш код работает, но новая деятельность загружается тот же макет.


Изменить
setContentView(R.layout.activity_home);
в
setContentView(R.layout.activity_login);

(или любой другой макет Войти называется) в вашем LoginActivity классе.

+1

Спасибо mike, хорошее место :) – user3052839

0

Ваш код ОК и он должен работать. Кажется, что ваша активность не включена в ваш AndroidManifest.xml.

Если да, возможно, вы действительно запускаете свое другое действие, но вы, возможно, пропустили, чтобы поместить правильный идентификатор макета в функцию setContentView.

+5

в этом случае он бы выбросил ClassNotFoundException –

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