Я новичок в разработке под андроид. мое приложение падает, когда я использую код ниже, он отлично работает, если я удалю onclicklistner, вот код..
int[] vmarray= {R.drawable.vm1bulb, R.drawable.vm2chair, R.drawable.vm3comb,
R.drawable.vm4cycle,R.drawable.vm5dairy,R.drawable.vm6fan,R.drawable.vm7mobile,
R.drawable.vm8pen,R.drawable.vm9shoes,R.drawable.vm10toothbrush,
R.drawable.vm11bangle, R.drawable.vm12watch};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
setContentView(R.layout.cacrvisualmem);
firstview =(LinearLayout)this.findViewById(R.id.firsthumlayout);
secondview = (LinearLayout) inflater.inflate(R.layout.cacrvisualmempart1, null);
for(int i=0;i<6;i++)
{
final int a = i;
button_var[a] = (Button)findViewById(idArray[a]);
}
// В ПЕРВОМ МАКЕТЕ ЕСТЬ 6 КНОПОК И ИХ ФОН ЗАДАЕТСЯ СЛУЧАЙНО
// РИСУЕМ ИЗ МАССИВА "vmarray". следующий код для этого
Random randomGenerator = new Random();
Random rand6 = new Random();
while (numbers.size() < 6) {
random1 = randomGenerator.nextInt(12);
random2 = rand6.nextInt(6);
if (!numbers.contains(random1) && (!numbers2.contains(random2)))
{
numbers.add(random1);
numbers2.add(random2);
b[random2].setBackgroundResource(vmarray[random1]);
count++;
}//if ends
}//while ends
Handler changeview = new Handler();
Runnable r1 = new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
// NOW, here, after 1 minute, second view will be inflated and button1
// background is set to one the image from the array
setContentView(secondview);
b11=(Button)findViewById(R.id.button1);
queryrandvar=queryrand.nextInt(12);
switch(queryrandvar)
{
case 0:
b11.setBackgroundResource(vmarray[0]);
queryval=0;
break;
case 1:
b11.setBackgroundResource(vmarray[1]);
queryval=1;
break;
case 2:
b11.setBackgroundResource(vmarray[2]);
queryval=2;
break;
case 3:
b11.setBackgroundResource(vmarray[3]);
queryval=3;
break;
case 4:
b11.setBackgroundResource(vmarray[4]);
queryval=4;
break;
case 5:
b11.setBackgroundResource(vmarray[5]);
queryval= 5;
break;
case 6:
b11.setBackgroundResource(vmarray[6]);
queryval= 6;
break;
case 7:
b11.setBackgroundResource(vmarray[7]);
queryval= 7;
break;
case 8:
b11.setBackgroundResource(vmarray[8]);
queryval= 8;
break;
case 9:
b11.setBackgroundResource(vmarray[9]);
queryval= 9;
break;
case 10:
b11.setBackgroundResource(vmarray[10]);
queryval= 10;
break;
case 11:
b11.setBackgroundResource(vmarray[11]);
queryval= 11;
break;
}//switch ends
}//run ends
};//runnable ends
b11.setOnClickListener(null);
changeview.postDelayed(r1,10000);
} //on create method ends here
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId())
{
case R.id.button1:
{
b11.setBackgroundResource(vmarray[1]);
break;
}
}//switch ends
}//onclick ends
если я удалю onclicklistner, он работает отлично, но его реализация приводит к сбою приложения, что не так с моим методом onclick или onclick listner
LOGCAT IS AS FOLLOW
07-20 03:06:15.980: E/AndroidRuntime(798): FATAL EXCEPTION: main
07-20 03:06:15.980: E/AndroidRuntime(798): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.univ.cog/com.univ.cog.Ca}: java.lang.NullPointerException
07-20 03:06:15.980: E/AndroidRuntime(798): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
07-20 03:06:15.980: E/AndroidRuntime(798): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
07-20 03:06:15.980: E/AndroidRuntime(798): at android.app.ActivityThread.access$600(ActivityThread.java:141)
07-20 03:06:15.980: E/AndroidRuntime(798): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
07-20 03:06:15.980: E/AndroidRuntime(798): at android.os.Handler.dispatchMessage(Handler.java:99)
07-20 03:06:15.980: E/AndroidRuntime(798): at android.os.Looper.loop(Looper.java:137)
07-20 03:06:15.980: E/AndroidRuntime(798): at android.app.ActivityThread.main(ActivityThread.java:5103)
07-20 03:06:15.980: E/AndroidRuntime(798): at java.lang.reflect.Method.invokeNative(Native Method)
07-20 03:06:15.980: E/AndroidRuntime(798): at java.lang.reflect.Method.invoke(Method.java:525)
07-20 03:06:15.980: E/AndroidRuntime(798): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
07-20 03:06:15.980: E/AndroidRuntime(798): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
07-20 03:06:15.980: E/AndroidRuntime(798): at dalvik.system.NativeStart.main(Native Method)
07-20 03:06:15.980: E/AndroidRuntime(798): Caused by: java.lang.NullPointerException
07-20 03:06:15.980: E/AndroidRuntime(798): at com.univ.cog.Ca.onCreate(Ca.java:162)
07-20 03:06:15.980: E/AndroidRuntime(798): at android.app.Activity.performCreate(Activity.java:5133)
07-20 03:06:15.980: E/AndroidRuntime(798): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
07-20 03:06:15.980: E/AndroidRuntime(798): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
07-20 03:06:15.980: E/AndroidRuntime(798): ... 11 more
07-20 03:06:16.040: W/ActivityManager(285): Force finishing activity com.univ.cog/.Ca