I am new to Android programming but have a little bit of experience with Java. However, I am creating an Android application and when a user clicks a button I want a different class to instantiated...
This is my MainActivity.java
private void setButtonClickListener() {
Button budgetPeriodButton = (Button)findViewById(R.id.budgetPeriodButton);
Button incomingsButton = (Button)findViewById(R.id.incomingsButton);
Button outgoingsButton = (Button)findViewById(R.id.outgoingsButton);
Button resultsButton = (Button)findViewById(R.id.resultsButton);
budgetPeriodButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
BudgetPeriod bp = new BudgetPeriod();
bp.changeUI();
}
And this is the BudgetPeriod class
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.widget.ImageView;
public class BudgetPeriod extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_budget);
super.onCreate(savedInstanceState);
changeUI();
}
public void changeUI() {
ImageView imageView = (ImageView) findViewById(R.id.budget_icon);
Drawable newBudgetImage;
newBudgetImage = getResources().getDrawable(R.drawable.budget_period);
imageView.setImageDrawable(newBudgetImage);
}
}
If the user clicks on the button, then an error message on the emulator says "Unfortunatley, this app has had to close"
Any ideas on what I am doing wrong? Thanks
Activity in android dosen't start by creating instance like this:
you need to use Intents to start activity like below
and you need to register that activity in manifest.xml file like:
you can make yourself clear about intents by Following links: http://www.vogella.com/articles/AndroidIntent/article.html http://developer.android.com/reference/android/content/Intent.html
First of All, you can not create an instance of Activity like this, and calling method of it. Like simple Java Class. Because Android Activity has its own life cycles of calling methods.
You have to start Activity BudgetPeriod Using Intent in Button's
onClick()
.Change your method like,
And register following BudgetPeriod Activity in AndroidManifest.xml file.
Start the activity like this.
and make sure you declared the activity in AndroidManifest.xml