2014-11-23 5 views
0

actionbar.setsubtitle 추가 한 후 나는 (bignerdranch에서) 내 응용 프로그램을 실행하려고 다음과 같은 코드를 추가 한 후 그것을 실행할 수 없습니다 :안드로이드 응용 프로그램 충돌

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { ActionBar actionBar = getActionBar(); actionBar.setSubtitle("Bodies of Water"); }

내가 런타임 예외를 얻을. 이 줄을 제거하면 응용 프로그램이 정상적으로 실행됩니다. 물론 나는 @ TargetApi (11)

나는 내 대상 SDK를 변경하려고했는데, 나는 다른 사람들의 코드를 복사 해봤는데 줄을 추가했습니다. 아무것도 작동하지 않는다 !!

private void updateQuestion() { 

    int question = mQuestionBank[mCurrentIndex].getQuestion(); 
    mQuestionTextView.setText(question); 
} 

private void checkAnswer(boolean userPressedTrue) { 
    boolean answerIsTrue = mQuestionBank[mCurrentIndex].isTrueQuestion(); 
    int messageResId = 0; 

    if (mIsCheater[mCurrentIndex]) { 
     messageResId = R.string.judgment_toast; 
    } else { 
     if (userPressedTrue == answerIsTrue) { 
      messageResId = R.string.correct_toast; 
     } else { 
      messageResId = R.string.incorrect_toast; 
     } 
    } 
    Toast.makeText(this, messageResId, Toast.LENGTH_SHORT).show(); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (data == null) { 
     return; 
    } 
    mIsCheater[mCurrentIndex] = data.getBooleanExtra(
      CheatActivity.EXTRA_ANSWER_SHOWN, false); 
} 

@TargetApi(11) 
@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    Log.d(TAG, "onCreate(Bundle) called"); 
    setContentView(R.layout.activity_quiz); 

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
     ActionBar actionBar = getActionBar(); 
     actionBar.setSubtitle("Bodies of Water"); 
    } 
    mQuestionTextView = (TextView) findViewById(R.id.question_text_view); 

    mTrueButton = (Button) findViewById(R.id.true_button); 
    mTrueButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      checkAnswer(true); 

     } 
    }); 

    mFalseButton = (Button) findViewById(R.id.false_button); 
    mFalseButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      checkAnswer(false); 

     } 
    } 

    ); 

    mNextButton = (Button) findViewById(R.id.next_button); 
    mNextButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      mCurrentIndex = (mCurrentIndex + 1) % mQuestionBank.length; 
      // mIsCheater=false; 
      updateQuestion(); 

     } 
    }); 

    if (savedInstanceState != null) { 
     mCurrentIndex = savedInstanceState.getInt(KEY_INDEX, 0); 
     mIsCheater[mCurrentIndex] = savedInstanceState.getBoolean(CHEATED); 
    } 

    mCheatButton = (Button) findViewById(R.id.cheat_button); 
    mCheatButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Intent i = new Intent(QuizActivity.this, CheatActivity.class); 
      boolean answerIsTrue = mQuestionBank[mCurrentIndex] 
        .isTrueQuestion(); 
      i.putExtra(CheatActivity.EXTRA_ANSWER_IS_TRUE, answerIsTrue); 
      startActivityForResult(i, 0); 
     } 
    }); 
    updateQuestion(); 

} 

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    super.onSaveInstanceState(savedInstanceState); 
    Log.i(TAG, "onSaveInstanceState"); 
    savedInstanceState.putInt(KEY_INDEX, mCurrentIndex); 
    savedInstanceState.putBoolean(CHEATED, mIsCheater[mCurrentIndex]); 
} 

@Override 
public void onStart() { 
    super.onStart(); 
    Log.d(TAG, "onStart() called"); 
} 

@Override 
public void onPause() { 
    super.onPause(); 
    Log.d(TAG, "onPause() called"); 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    Log.d(TAG, "onResume() called"); 
} 

@Override 
public void onStop() { 
    super.onStop(); 
    Log.d(TAG, "onStop() called"); 
} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    Log.d(TAG, "onDestroy() called"); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.quiz, 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(); 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

} `

어떤 문제가 될 수 :

이 내 코드?

도와주세요 ..

+0

가 지원 libraryh 것 같다? –

+0

LogCat을 사용하여 충돌과 관련된 Java 스택 추적을 검사하십시오. https://stackoverflow.com/questions/23353173/unfortunately-myapp-has-stopped-how-can-i-solve-this – CommonsWare

답변

0

나는 bignerdranch와 동일한 문제가있었습니다. 이 QuizActivity 내가 대신 getActionBar의) getSupportActionBar를 (사용 가지고 ActionBarActivity 의 서브 클래스 대신에 활동하기 때문에()는 액션 바을 위해 가져 라이브러리

관련 문제