Dank P.T. für was wie die richtige Antwort auf Frage Building multi-SDK Android apps in Eclipse without losing compile-time checks aussieht. Wenn ich jedoch versuche, die @TargetApi() - Annotation wie empfohlen zu verwenden, werden Syntaxfehler generiert.Android Eclipse Lint API überprüft
@TargetApi(11) // location 1
public class DisplayMessageActivity extends Activity {
@Override
@TargetApi(11) // location 2
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
@TargetApi(11) // location 3
getActionBar().setDisplayHomeAsUpEnabled(true); }
erzeugt zwei Syntaxfehler auf der @TargetApi Linie, wenn es in der Mitte des Codes ist als 3 an der Stelle gezeigt:
x Syntax error, insert "enum Identifier" to complete EnumHeaderName
x Syntax error, insert "enumBody" to complete BlockStatements
Die Fehler existieren, ob ich die @TargetApi
Zeile vor der if
haben Anweisung oder danach wie gezeigt. Gibt es irgendwelche Voraussetzungen (Importe) oder andere Überlegungen, die nicht in dem Artikel Lint API Check
Artikel http://tools.android.com/recent/lintapicheck erwähnt werden, um @TargetApi() richtig zu funktionieren?
--- --- Bearbeiten 2012.09.03
Wenn ich die @TargetApi Annotation vor der Klassendefinition (gezeigt als Position 1) oder vor der Methodendefinition (gezeigt als Position 2 entweder bewegen vor oder nach der @Override Anmerkung), erhalte ich unterschiedliche Fehler:
x TargetApi cannot be resolved to a type
x The attribute value is undefined for the annotation type TargetApi
--- bearbeiten 2012.09.04 ---
Hier ist der vollständige Quellcode:
package com.example.my.first.app;
import android.app.Activity;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.NavUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
public class DisplayMessageActivity extends Activity {
@TargetApi(11)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// ActionBar introduced in Android 3.0 Honeycomb API 11
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
getActionBar().setDisplayHomeAsUpEnabled(true); } // Up Navigation
// Get the message from the intent
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
// Create the text view
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText(message);
// Set the text view as the activity layout
setContentView(textView);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_display_message, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
}
Danke, versuchte es aber immer noch nicht für mich arbeiten. – Dave
können Sie den gesamten Code posten, nicht nur diesen Teil. Welche ADT-Version verwenden Sie? – nandeesh
Eclipse für Mobile Juno Build-ID: 20120614-1722, Android-Entwicklungstools 20.0.3.v201208082019-427395. – Dave