在Android中创建新类的实例

时间:2013-03-11 11:46:44

标签: java android xml android-intent

我是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,此应用必须关闭”

关于我做错的任何想法? 感谢

3 个答案:

答案 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