-1

我是 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);
    }
}

如果用户单击该按钮,则模拟器上的错误消息会显示“不幸的是,此应用程序必须关闭”

关于我做错了什么的任何想法?谢谢

4

3 回答 3

2

首先,你不能像这样创建一个Activity的实例,并调用它的方法。就像简单的 Java 类。因为Android Activity 有自己的调用方法的生命周期。

您必须使用 Button 中的 Intent启动 Activity BudgetPeriodonClick()

改变你的方法,比如,

budgetPeriodButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
          Intent intent = new Intent(v.getContext(), BudgetPeriod.class);
          startActivity(intent)
}

并在AndroidManifest.xml文件 中注册以下BudgetPeriod Activity 。

于 2013-03-11T11:48:46.640 回答
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" />
于 2013-03-11T11:48:54.207 回答
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

于 2013-03-11T11:57:07.347 回答