0

我有以下代码:

buttons[i].setOnClickListener(new View.OnClickListener()
{
  @Override 
  public void onClick(View v) 
  {
    try{
      startActivity(new Intent(names[x][0]));
    }
    catch(ActivityNotFoundException e){
      if (x==1) {
        Intent intent = newIntent(Intent.ACTION_VIEW,Uri.parse("market://details?id=uk.co.nickfines.RealCalc"));
      }
    }
    try {
      startActivity(intent);
    } catch (ActivityNotFoundException f) {
      // Google Play Store app not available.
    }
  }
});

在我发表声明后它开始intent cannot be resolved to a variable出错。在我这样做之前一切正常。问题是什么?startActivity(intent)Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("market://details?id=uk.co.nickfines.RealCalc")if

4

3 回答 3

2

您的变量intent是在块内定义的,因此它仅在块中可见。如果您想在其他块中使用它,请将其定义向上移动。或将开始活动移至您的catch街区。无论如何,您在其他地方与它无关,因为只有当异常被抛出并且x==1意图存在时。

还有更多推荐。有常见的java编码约定。阅读您的代码非常困难。我已经为您格式化并解决了您的问题。这是它的样子。

    buttons[i].setOnClickListener(new View.OnClickListener() {
        @Override 
        public void onClick(View v) {
        try{
            startActivity(new Intent(names[x][0]));
        } catch(ActivityNotFoundException e) {
            if (x==1) {
                Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("market://details?id=uk.co.nickfines.RealCalc"));
                try {
                    startActivity(intent);
                } catch (ActivityNotFoundException f) {
                }
            }
        }

    });
于 2013-02-20T20:05:14.597 回答
1

试试这个 :

buttons[i].setOnClickListener(new View.OnClickListener()
{
    @Override 
    public void onClick(View v) 
    {
        Intent intent;
        try{
            startActivity(new Intent(names[x][0]));
        }
        catch(ActivityNotFoundException e){
            if (x==1) {
                intent = new Intent(Intent.ACTION_VIEW,Uri.parse("market://details?id=uk.co.nickfines.RealCalc"));
            }
        }
        try {
            startActivity(intent);
        } catch (ActivityNotFoundException f) {
        // Google Play Store app not available.
        }
    }
    // TODO Auto-generated method stub
}
);

您的意图是 if 语句的本地

于 2013-02-20T20:01:00.540 回答
1

在尝试创建应用程序之前,请先学习一些基本的 Java。

在这里,您仅在 catch 块中定义意图:

catch(ActivityNotFoundException e){
    if (x==1) {Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("market://details?id=uk.co.nickfines.RealCalc"));
}

意图的范围仅在该块中,因此startActivity(intent);如您所见,将给出编译器错误。

Intent intent;
try{
    startActivity(new Intent(names[x][0]));
} catch(ActivityNotFoundException e) {
    if (x==1){
       intent = new Intent(Intent.ACTION_VIEW,Uri.parse("market://details?id=uk.co.nickfines.RealCalc"));
    }
}
try {
    if(intent!=null){
        startActivity(intent);
    }
} catch (ActivityNotFoundException f) {
    // Google Play Store app not available.
}

if(x==1)看起来很邪恶。它在做什么?

于 2013-02-20T20:03:05.407 回答