Dav*_*ave 5 eclipse android android-lint
感谢PT看起来正确的答案问题在Eclipse中构建多SDK Android应用程序而不会丢失编译时检查.但是,当我尝试按照建议使用@TargetApi()注释时,它会生成语法错误.
@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); }
Run Code Online (Sandbox Code Playgroud)
@TargetApi行在代码中间生成两个语法错误,如位置3所示:
x Syntax error, insert "enum Identifier" to complete EnumHeaderName
x Syntax error, insert "enumBody" to complete BlockStatements
Run Code Online (Sandbox Code Playgroud)
无论我是@TargetApi在if声明之前还是在声明之后,都存在错误,如图所示.是否有任何先决条件(导入)或Lint API Check文章http://tools.android.com/recent/lintapicheck中未提及的其他注意事项,以使@TargetApi()正常工作?
---编辑9/3/2012 ---
如果我将@TargetApi注释移动到类定义(显示为位置1)之前或方法定义之前(显示为位置2,在@Override注释之前或之后),我会得到不同的错误:
x TargetApi cannot be resolved to a type
x The attribute value is undefined for the annotation type TargetApi
Run Code Online (Sandbox Code Playgroud)
---编辑9/4/2012 ---
这是完整的源代码:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
FizzBuzz 在没有编译器警告的情况下如何在Android版本代码中提供了这个答案?.
除了@TargetApi(nn)代码中的注释外,还需要导入该注释的定义:
import android.annotation.TargetApi;
Run Code Online (Sandbox Code Playgroud)
由于某些未知原因,使用@Override注释不需要导入.如果修复ADT文档http://tools.android.com/recent/lintapicheck以消除虚假代码示例并提及所需的导入,将会很有帮助.
| 归档时间: |
|
| 查看次数: |
7029 次 |
| 最近记录: |