2017-02-16 3 views
-1
package cppandi.apjquotes; 

import android.content.Intent; 
import android.os.CountDownTimer; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.Button; 
import android.view.View; 

public class MainActivity extends AppCompatActivity { 
Button btn1; 
Button btn2; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.front); 
btn1 = (Button) this.findViewById(R.id.quotes); 
btn2 = (Button) this.findViewById(R.id.about); 
new CountDownTimer(5000, 1000) { 

@Override 
public void onTick(long millisUntilFinished) { 
} 

@Override 
public void onFinish() { 
//set the new Content of your activity 
setContentView(R.layout.activity_main); 
} 
}.start(); 
btn1.setOnClickListener(new View.OnClickListener() { 
public void onClick(View v) { 
// Perform action on click 
Intent i = new Intent(v.getContext(), quotes.class); 
startActivity(i); 
} 
}); 
btn2.setOnClickListener(new View.OnClickListener() { 
public void onClick(View v) { 
// Perform action on click 
Intent i = new Intent(v.getContext(), about.class); 
startActivity(i); 
} 
}); 
}} 





<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_main" 
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="cppandi.apjquotes.MainActivity"> 

<Button 
android:text="@string/quotes" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignParentTop="true" 
android:layout_centerHorizontal="true" 
android:layout_marginTop="126dp" 
android:id="@+id/quotes" 
android:onClick="btnClickAct1"/> 
<Button 
android:text="@string/about" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_below="@+id/quotes" 
android:layout_alignLeft="@+id/quotes" 
android:layout_alignStart="@+id/quotes" 
android:layout_marginTop="94dp" 
android:id="@+id/about" 
android:layout_alignRight="@+id/quotes" 
android:layout_alignEnd="@+id/quotes" 
android:onClick="btnClickAct2"/> 
</RelativeLayout> 

Здесь я получаю ошибку«Попытки вызвать виртуальный метод «недействительный android.widget. Button.setOnClickListener (android.view.View $ OnClickListener) "на ссылке с нулевым объектом" Даже я определил все кнопки.Попытка вызвать виртуальный метод «недействительный android.widget.Button.setOnClickListener на нулевой ссылке на объект, даже я определяю все кнопки

+2

Таймер асинхронный. Остальная часть кода будет выполняться до окончания таймера и устанавливает ваш макет. Если вы хотите придерживаться этого подхода, назначьте и установите кнопки внутри окончания таймера после настройки макета. – Kushan

+1

И, пожалуйста, используйте правильное отступы, задавая вопросы, для всех это проще. –

+0

Хорошо, я правильно отступил, но вопрос не отправлен, он просит дать 4 пробела для каждой строки. – Chitrapandi

ответ

0

Ваши кнопки находятся в layout_main.

Вы устанавливаете основную компоновку через 5 секунд. В точке и в этом месте будет раздуваться и настраиваться макет.

Если вы попытаетесь ссылаться на представления до этой точки, представления возвратят значение null. Ваши кнопки и слушатели должны быть назначены только после окончания таймера. До тех пор, даже если вы используете findViewById, представления будут назначены нулевые, так как макет не завышен.

Изменение макетов, подобных этому с помощью таймера, вероятно, не является хорошей идеей в первую очередь. Я думаю, что вы ищете всплеск вместо текущего подхода. Google заставки, чтобы показать, когда приложение еще не загружено.

+0

Без тайм-аута, могу ли я настроить одно изображение в течение 3-4 секунд, когда приложение начнется. Если да, то дайте один пример. – Chitrapandi

+0

Google заставки экрана. Это именно то, что делает экран заставки. Затем вы должны установить основной макет без таймера. – Kushan

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

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