eveything looks to be fine, but I still get error when I try to change the view by pressing the button. Here is code:
package com.example.testy;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.ViewFlipper;
public class MainActivity extends Activity {
ViewFlipper flipper;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
flipper = (ViewFlipper) findViewById(R.id.viewFlipper1);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public void clcik(View v) {
flipper.showNext();
}
}
And here is my XML:
<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:gravity="top" >
<ViewFlipper
android:id="@+id/viewFlipper1"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:text="Button!!" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView!!" />
</ViewFlipper>
</RelativeLayout>
Anyone knows what can be wrong in this code? Thank you for answers!
Perhaps you should fix the name of your method to click
?
public void **clcik**(View v) {
flipper.showNext();
}
Due the wrong spell (clcik
) in our activity code, you may be getting a Exception because Android can't find the click
method.
And thanks to @yugidroid's answer I spot one more error on your code:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
flipper = (ViewFlipper) findViewById(R.id.viewFlipper1);
setContentView(R.layout.activity_main);
}
You call findViewById
before even you have any Views (a call to setContentView
) . You will get a NullPointException because of that.
I would recommend you to make a call to super.onCreate
the very first line of your onCreate()
method. That is what Google does.
Regarding setting the click listener on layout or creating a listener and setting on the code. Well, there is not much difference, although the latter is certainly faster as the first uses reflection, what has a higher cost than just calling a method.