我正在尝试使用TaskDescription最小化我的应用程序时设置ActionBar的颜色,如这篇文章的答案所建议的:Setting header color of app in overview (recent apps) screen

以下是相关代码:

...
import android.app.ActivityManager;
...
public class MainActivity extends SherlockFragmentActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
...
        int c = Color.parseColor("#0A782F");
        ActivityManager.TaskDescription td = new ActivityManager.TaskDescription(R.string.app_name, R.drawable.launcher, c);
        ((SherlockFragmentActivity) this).setTaskDescription(td);
    }
...
}


尽管我尚未发布该项目的xml资源文件,但是您可以假定R.string.app_nameR.drawable.launcher是在xml文件中定义的。

这是问题所在:编译此代码时,出现以下错误:

error: cannot find symbol
...
symbol: class TaskDescription
location: class MainActivity


现在,据我了解,当您引用不存在的类或变量名称时,Java会引发cannot find symbol错误。对于类,通常是由于忘记导入所需的类而引起的。但是,在这种情况下,这不是原因,因为我已经在类文件的顶部清楚地导入了ActivityManager

以下是一些其他示例,其中人们做了完全相同的事情,只是为了表明我已经完成了研究:http://www.programcreek.com/java-api-examples/index.php?class=android.app.ActivityManager&method=TaskDescription

最后,我认为问题可能在于您只能在Activity上下文中实例化TaskDescription类。但是,我使用的是SherlockFragmentActivity而不是标准的AppCompatActivity。不幸的是,我尝试更改此设置,但仍然遇到相同的错误。有任何想法吗?

在此先感谢您的帮助!

最佳答案

找到了解决方案!我没有提到我使用gradle构建项目的问题。问题是我使用的是旧的Sdk版本(特别是我使用的是尚未定义TaskDescription类的android Sdk版本)。因此,要解决此问题,我要做的就是将以下行添加到我的build.gradle文件中的相应位置:

compileSdkVersion 21


希望这可以帮助由于相同原因而感到迷路的其他人。

07-28 02:14