2015-04-09 2 views
0

У меня есть некоторые проблемы с программированием на Android. Я пытаюсь открыть мероприятие на своем телефоне, но он терпит неудачу. В нем говорится, что, к сожалению, программа прекратилась. Я не знаю, как это решить, я пытаюсь подключиться к этому методу ниже. Любая помощь приветствуется. Пожалуйста, спросите, не указал ли я достаточно.Невозможно открыть активность в android

public void addGlossary(View v){ 
    Intent intent = new Intent (this, addGlossary.class); 
    Button buttonZero = (Button) findViewById(R.id.buttonZero); 
    startActivity(intent); 

} 

Вот код деятельности:

public abstract class addGlossary extends Activity implements OnClickListener, OnInitListener { 


    private int MY_DATA_CHECK_CODE = 0; 


    private TextToSpeech myTTS; 


private MediaPlayer mMediaPlayer; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_add_glossary); 


     Button speakButton = (Button)findViewById(R.id.speak); 
     speakButton.setOnClickListener(this); 


     Intent checkTTSIntent = new Intent(); 
     checkTTSIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA); 
     startActivityForResult(checkTTSIntent, MY_DATA_CHECK_CODE); 
     mMediaPlayer = new MediaPlayer(); 
     mMediaPlayer = MediaPlayer.create(this, R.raw.button); 
     mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
     mMediaPlayer.start(); 
     mMediaPlayer.setOnCompletionListener(new OnCompletionListener() { 
      @Override 
      public void onCompletion(MediaPlayer mp) { 
       mMediaPlayer.stop(); 
      } 
     }); 


    } 

    public void buttonReturn(View v){ 
     Intent intent = new Intent (this, MainActivity.class); 
     Button buttonreturn = (Button) findViewById(R.id.buttonReturn); 
     startActivity(intent); 

    } 


    public void startGame(View v){ 
     Intent intent = new Intent (this, firstLevel.class); 
     Button buttonstart = (Button) findViewById(R.id.buttonStart); 
     startActivity(intent); 



    } 




    public void onInit(int initStatus) { 
     if(myTTS.isLanguageAvailable(Locale.US)==TextToSpeech.LANG_AVAILABLE) { 
      myTTS.setLanguage(Locale.US); 
     } 

     else if (initStatus == TextToSpeech.ERROR) { 
      Toast.makeText(this, "Sorry! Text To Speech failed...", Toast.LENGTH_LONG).show(); 
     } 

    } 


    private void speakWords(String speech){ 
     myTTS.speak(speech, TextToSpeech.QUEUE_FLUSH, null); 



     } 

    public void buttonAdd(){ 
     //lagrar texten från textfältet man knappade in till string 
     EditText enteredText = (EditText)findViewById(R.id.enter); 
     String words = enteredText.getText().toString(); 
     speakWords(words); 

    } 



    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == MY_DATA_CHECK_CODE) { 
      if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) { 
       myTTS = new TextToSpeech(this, this); 
      } 
      else { 
       Intent installTTSIntent = new Intent(); 
       installTTSIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA); 
       startActivity(installTTSIntent); 
      } 
     } 
    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_add_glossary, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 
+3

Пожалуйста, напишите stacktrace (журнал ошибок), чтобы люди могли диагностировать проблему. –

+2

Почему вы объявили свою «деятельность» как «абстрактную»? Невозможно создать экземпляр класса «abstract», который является одной из веских причин, по которой он, вероятно, будет терпеть неудачу. Удалите декларацию «abstract» и посмотрите, что произойдет. – Squonk

+0

Я делаю ставку на IDE, предложив выбор, чтобы сделать абстрактную категорию как (контрпродуктивное) предложенное исправление для некоторой проблемы, например, не реализовать один из методов одного из реализованных интерфейсов ... –

ответ

3

Ваш класс adGlossary является абстрактным классом. Android должен увидеть конкретную реализацию Activity для ее запуска.

Удалите ключевое слово abstract и предположив, что у вас есть активность в манифесте, он должен начинаться.

** EDIT: ** Как отметил в комментариях Крис Страттон, вероятной причиной, по которой был сделан реферат, было обход внедрения OnClickListener и OnInitListener. Хотя код может быть скомпилирован, решение по-прежнему не работает.

Таким образом, помимо удаления абстрактного классификатора вам также потребуется реализовать интерфейсы.

Удалить абстрактный модификатор. Компилятор должен немедленно обнаружить нереализованные методы и должен попросить вас добавить необязательные методы или пометить класс как абстрактный (появятся красные squiggly линии, и вы должны получить эти параметры, когда наводите на него курсор). Попросите компилятор добавить нереализованные методы. У вас должно быть:

@Override 
public void onClick(View view) { 
    // Do something when clicked 
    // Implement logic here 
} 

@Override 
public void onInit(int status) { 
    // Implement logic here 
} 

// It will be all done and everything should work 

Просто выполните свою логику в рамках вышеуказанных методов и это должно сделать это.

+1

Да - но они, вероятно, будут иметь для реализации метода (ов) интерфейса OnClickListener до его компиляции. Вероятно, произошло то, что IDE предложила выбор для исправления ошибки, не сделав этого, и они выбрали неработоспособный (но компилируемый) вариант создания абстрактного класса. –

+0

Хороший улов. Я увидел реферат и сразу указал на это. Я отредактирую свой ответ, чтобы отразить ваши выводы. – ucsunil

+0

Как мне это сделать? Я новичок в программировании на Android. И извините за поздний ответ –

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