2015-05-21 3 views
1

Im делает переднюю часть моего нового приложения на Android, и я столкнулся с проблемой. В моем первом действии моя кнопка отлично работает и переводит пользователя во вторую активность, теперь проблема возникает. Когда я нажимаю на другую кнопку, чтобы перейти к третьей операции, ничего не происходит.ImageButton ничего не делает на клике - android

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    ImageButton saldoButton = (ImageButton)findViewById(R.id.saldoButton); 

    saldoButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      setContentView(R.layout.activity_saldo); 

     } 
    }); 
} 

следуют теперь мой XML этой кнопки:

  <ImageButton 
      android:layout_width="150dp" 
      android:layout_height="150dp" 
      android:id="@+id/saldoButton" 
      android:layout_column="2" 
      android:background="?android:attr/selectableItemBackground" 
      android:src="@drawable/test02" /> 

Любой имеет понятия, что происходит?

+0

Вам нужно вызвать «findViewById» еще раз, чтобы восстановить доступ к вашему ImageView http://stackoverflow.com/questions/7052484/calling-setcontentview-multiple-times – TyMarc

+1

Просто убедитесь, что только вызова 'setContentView (R.layout .activity_saldo); 'не означает, что вы начинаете новую деятельность, это будет одно и то же действие с изменением только макета. Чтобы взаимодействовать с новым видом макета, вам нужно снова определить представления, используя 'findViewById()'. – user370305

+0

@TyMarc, где мне нужно снова позвонить? –

ответ

4

Вы должны начать Третий вид деятельности

saldoButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      Intent i= new Intent(currentActivity.this,thirdActivity.class); 
      startActivity(i); 

     } 
    }); 
+0

Все еще не работает. Я уже пробовал это, но я дал еще одну попытку и ничего. –

2

Вы пропускаете android:clickable="true" на вашем XML.

 <ImageButton 
     android:layout_width="150dp" 
     android:layout_height="150dp" 
     android:id="@+id/saldoButton" 
     android:layout_column="2" 
     android:clickable="true" 
     android:background="?android:attr/selectableItemBackground" 
     android:src="@drawable/test02" /> 

И тогда на вашей деятельности класса

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    ImageButton saldoButton = (ImageButton)findViewById(R.id.saldoButton); 

    saldoButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      Log.d("This Class", "I am a working button!"); 
      Intent intent = new Intent(this, NewClass.class); 
      this.startActivity(intent); 

     } 
    }); 
} 

он должен работать. Если это не так, пожалуйста, скажите мне. Удачи!

+0

Все еще не работает. :/ –

+0

Хм, это странно. Вы получаете какие-либо ошибки? Как именно вы проверяете, работает ли он или нет? – PossessWithin

+0

попытайтесь начать новую деятельность следующим образом: _Intent intent = new Intent (это, NewClass.класс); context.startActivity (intent); _ – PossessWithin

1

Поскольку вы раздуваете новый макет, вам нужно еще раз позвонить findViewById, чтобы восстановить доступ к вашему ImageView, поскольку идентификатор вашей кнопки в одном макете макета не совпадает с другим макетом.

saldoButton.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     setContentView(R.layout.activity_saldo); 
     saldoButton = (ImageView) findViewById(R.id.saldoButton); 
    } 
}); 

При этом вы должны создать другую деятельность или другой фрагмент вместо раздувания другого макета.

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