gpt4 book ai didi

Android Eclipse Lint API 检查

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:06:27 25 4
gpt4 key购买 nike

谢谢 P.T.对于问题 Building multi-SDK Android apps in Eclipse without losing compile-time checks 的正确答案.但是,当我尝试按照建议使用 @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); }

如位置 3 所示,当它位于代码中间时,在 @TargetApi 行上生成两个语法错误:

x Syntax error, insert "enum Identifier" to complete EnumHeaderName
x Syntax error, insert "enumBody" to complete BlockStatements

无论我在 if 语句之前还是之后有 @TargetApi 行,都存在错误,如图所示。 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

--- 编辑 2012 年 9 月 4 日 ---

这里是完整的源代码:

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

}

最佳答案

FizzBu​​zz 在 How do you version code in Android without compiler warnings? 中对此提供了答案.

除了代码中的@TargetApi(nn)注解,还需要导入那个注解的定义:

import android.annotation.TargetApi;

由于某些未知原因,使用 @Override 注释不需要导入。如果 ADT 文档 http://tools.android.com/recent/lintapicheck 会很有帮助已修复以消除虚假代码示例并提及所需的导入。

关于Android Eclipse Lint API 检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12232237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com