0

我需要从 Android 的清单中解析包版本。我在主要活动中直接做,不知道是不是错了。

我现在无法测试这是否有效,由于各种原因,尽管我正在运行 Eclipse,但我无法在几天内完成,但这真的让我很伤心,因为我是一个相当令人担忧的人:

{ try {
    String version = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
} catch (NameNotFoundException e) {
    Log.e("tag", e.getMessage());
} }

你注意到 WHOLE 语句前后的大括号了吗?如果我删除它们,Eclipse 会说

“令牌“{”上的语法错误,{ 应在此令牌之后”

在前面的活动开始中,以及在它之后的任何方法或语句中的类似内容。

我用谷歌搜索它,因为这是我能做的,但没有发现他们需要它们。Java 教程,示例拼写 try catch 没有这个。我是在做一些非常愚蠢的事情还是这是正常行为,我的代码应该在我回来时运行?

再次对这个问题感到抱歉,但我只是需要。

提前致谢。

4

2 回答 2

3

您可能在任何方法之外都有该代码。使用大括号,Java 将其视为实例初始化程序块。没有牙套是违法的。

该代码的另一个问题是您初始化变量version然后立即丢失信息,因为version它是块本地的try。该变量可能应该在块外声明。

于 2012-09-25T20:08:23.420 回答
2

我猜这个 try 块就class {在你的代码里面。

如果是这样,您需要它们,因为在 java 中它被视为实例初始化块。

EDIT:

在向问题添加更多信息之后,是的,这不应该是初始化块,它应该被包装在一个方法中。

于 2012-09-25T20:08:09.943 回答