我是Android编程的新手,但对Java有一点经验。但是,我正在创建一个Android应用程序,当用户单击一个按钮时,我想要一个不同的类来实例化...
这是我的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();
}
这是BudgetPeriod类
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);
}
}
如果用户点击该按钮,则模拟器上的错误消息显示“Unfortunatley,此应用必须关闭”
关于我做错的任何想法? 感谢
答案 0 :(得分:2)
首先,你不能像这样创建一个Activity 的实例,并调用它的方法。就像简单的Java Class一样。因为Android Activity有自己的调用方法生命周期。
你必须在Button的onClick()
中启动Activity BudgetPeriod 使用Intent。
更改您的方法,
budgetPeriodButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), BudgetPeriod.class);
startActivity(intent)
}
在 AndroidManifest.xml 文件中注册 BudgetPeriod 活动。
答案 1 :(得分:2)
像这样开始活动。
budgetPeriodButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), BudgetPeriod.class);
startActivity(intent);
}
});
并确保您在AndroidManifest.xml中声明了活动
<activity name=".BudgetPeriod" android:name="Budget" />
答案 2 :(得分:0)
android中的活动不是通过创建这样的实例来开始的:
您需要使用Intents来启动下面的活动
budgetPeriodButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), BudgetPeriod.class);
startActivity(intent);
}
您需要在manifest.xml文件中注册该活动,如:
<activity
android:name=".BudgetPeriod"
/>
您可以通过以下链接明确自己的意图: http://www.vogella.com/articles/AndroidIntent/article.html http://developer.android.com/reference/android/content/Intent.html