OK I\'m new to android dev\'s and Java, so I\'m having problems with on click method here\'s my code. I know I\'ve gotta be close, thanks in advance. All I want my button to
You need to make the same method name both in layout XML and java code.
If you use android:onClick="setLogin"
then you need to make a method with the same name, setLogin:
// Please be noted that you need to add the "View v" parameter
public void setLogin(View v) {
}
ADVICE:
Do not mix layout with code by using android:onClick
tag in your XML. Instead, move the click method to your class with OnClickListener
method like:
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
Make a layout just for layout and no more. It will save your precious time when you need to refactoring for Supporting Multiple Screens.
Method 1:
public void onClick(View v) {
Intent i = new Intent(currentActivity.this, SecondActivity.class);
startActivty(i);
}
Method 2:
Button button = (Button) findViewById(R.id.mybutton);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Toast.makeText(this, "Button Clicked", Toast.LENGTH_LONG).show();
}
});
Here is some sample code of how to add a button named Add. You should declare the variable as a member variable, and the naming convention for member variables is to start with the letter "m".
Hit Alt+Enter on the classes to add the missing references.
Add this to your activity_main.xml:
<Button
android:id="@+id/buttonAdd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ADD"
/>
Add this to your MainActivity.java:
public class MainActivity extends AppCompatActivity {
Button mButtonAdd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButtonAdd = findViewById(R.id.buttonAdd);
mButtonAdd.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// do something here
}
});
}
}
If you write like this in Button tag in xml file : android:onClick="setLogin" then
Do like this:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/button1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/btn"
android:onClick="onClickBtn" />
</LinearLayout>
and in Code part:
public class StartUpActivity extends Activity
{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void onClickBtn(View v)
{
Toast.makeText(this, "Clicked on Button", Toast.LENGTH_LONG).show();
}
}
and no need all this:
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
Check it once;
Use Layout inflater method in your button click. it will change your current .xml to targeted .xml file. Google for layout inflater code.
There are two solutions for this are :-
(1) do not put onClick in xml
(2) remove
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
and put
public void setLogin(View v) {
// Your code here
}