2013-03-11 2 views
-1

Я новичок в программировании на Android, но имею немного опыта работы с Java. Тем не менее, я создаю Android приложения и когда пользователь нажимает на кнопку Я хочу, чтобы другой класс инстанцирован ... Это мой MainActivity.javaСоздать экземпляр нового класса в Android

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(); 
      } 

И это класс

бюджетного
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

Деятельность не инстанцирован использования конструкторов в Android. Чего вы хотите достичь? – 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, как это, и его метод вызова. Как простой Java-класс. Поскольку Android 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 файл.

+0

Еще одна вещь удалить второй дополнительный 'super.onCreate (savedInstanceState);' from' onCreate() 'из' BudgetPeriod' Activity. – user370305

0

активности в андроиде начал dosen't путем создания экземпляра, как это:

вам нужно использовать Намерение, чтобы начать деятельность например ниже

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

Смежные вопросы