-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 アクティビティには、メソッドを呼び出す独自のライフサイクルがあるためです。

ボタンの で Intent を使用してActivity BudgetPeriodを開始する必要がありますonClick()

次のようにメソッドを変更します。

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 のアクティビティは、次のようにインスタンスを作成しても開始されません。

以下のようなアクティビティを開始するには、インテントを使用する必要があります

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 に答える