2013-03-11 5 views
-1

Android 프로그래밍을 처음 사용하지만 Java에 대한 경험이 조금 있습니다. 그러나, 나는 안드로이드 응용 프로그램을 만드는 오전 및 사용자가 버튼을 클릭 할 때 인스턴스에 나는 다른 클래스를 원하는 ... 이 내 MainActivity.javaAndroid에서 새 클래스 인스턴스 만들기

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

활동 안드로이드에 생성자를 사용하여 인스턴스화되지 않습니다. 달성하고자하는 것은 무엇입니까? – Egor

+0

인 텐트를 사용하여 새 활동 시작 – Ajit

답변

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" /> 
+0

대단히 감사합니다. –

2

우선 이 예와 같이 Activity 인스턴스를 만들고 그 메소드를 호출 할 수 없습니다. 간단한 자바 클래스처럼. Android 활동에는 메소드를 호출하는 자체 수명주기가 있기 때문입니다.

활동 BudgetPeriod 버튼의 onClick()에서 의도를 사용해야합니다. 의 AndroidManifest.xml 파일 BudgetPeriod 활동 다음

변경 당신의 방법처럼,

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

그리고 등록합니다.

+0

또 하나는'BudgetPeriod' 활동의'onCreate()'에서 두 번째 여분의'super.onCreate (savedInstanceState);를 제거하는 것입니다. – user370305

0

활동을 활동을 선언해야합니다 :

당신이 활동을 시작하는 인 텐트를 사용할 필요가

아래와 같이

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

    } 

이며이 활동을 manifest.xm에 등록해야합니다. 당신은 다음 링크에 의해 의도에 대해 자신을 명확하게 할 수

<activity 
     android:name=".BudgetPeriod" 
    /> 

: 같은 리터 파일 http://www.vogella.com/articles/AndroidIntent/article.html http://developer.android.com/reference/android/content/Intent.html

관련 문제