Android Eclipse Lint API 检查

2023-12-29

谢谢 P.T.看起来像是问题的正确答案在 Eclipse 中构建多 SDK Android 应用程序而不会丢失编译时检查 https://stackoverflow.com/questions/7642249。但是,当我尝试按照建议使用 @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); }

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

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

无论我是否有错误都存在@TargetApi之前的行if语句或在其后如图所示。是否有任何先决条件(进口)或其他未在其中提及的考虑因素Lint API Check文章http://tools.android.com/recent/lintapicheck 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

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

}

FizzBu​​zz 对此给出了答案如何在没有编译器警告的情况下对 Android 中的代码进行版本控制? https://stackoverflow.com/questions/11983959/how-do-you-version-code-in-android-without-compiler-warnings.

除了@TargetApi(nn)代码中的注释,您还需要导入该注释的定义:

import android.annotation.TargetApi;

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Eclipse Lint API 检查 的相关文章

随机推荐