2013-04-16 36 views
0

这必须是一个非常简单的答案。我一直在搜索和搜索如何将变量与Java中的字符串进行比较。我有一个意图,只想要宣布一些变数,如果来自意图的数据匹配。这当然不会那么难。 Java让我很沮丧。 :) 我知道这种类型将在某些时候等于消息,但它不起作用。 例如Android - 从意图比较字符串

String type = intent.getStringExtra("type"); 

if(type.equals("message")){ 
      String msg = intent.getStringExtra("message"); 
      String avatar = intent.getStringExtra("photo"); 
      count = Integer.parseInt(intent.getStringExtra("count")); 
      Bitmap photo = getBitmapFromURL(avatar); 
      String theMessage = Html.fromHtml(msg).toString().replace("\\", ""); 
     } 

编辑:

我做输出类型登录的建议,它并显示message像它应该。我试图给我们相同的变量theMessagephoto,但它抱怨说它没有声明,所以它会提示修复并将其置于顶端。这是什么导致它不起作用?这是一个通知。

private static String theMessage = null; 
private static Bitmap photo = null; 

我尝试在代码中稍后执行此操作,但它抱怨未声明。

if(type.equals("message")){ 
     notification.setSubText(theMessage); 
     notification.setLargeIcon(photo); 
     } 

这就是我所拥有的,即使没有声明的错误消失后,它仍然不起作用。

+2

String type = intent.getStringExtra(“type”);尝试记录您获得的值。 – Triode

+0

您的字符串比较没问题。不幸的是,你甚至没有说出什么不适合你。有一件事是肯定的,你的代码不健壮;例如如果意图中没有“类型”额外的内容,您的应用程序将崩溃。 –

+1

支持@ ClassStacker的评论:这是值得颠倒的方法调用:'“message”.equals(type)'以防止NPE('NullPointerException')。调用一个'String'常量的方法可能会更令人困惑,但这样做很有用(如果过于混淆,请提取常量/ static final String)。 – TWiStErRob

回答

0

尝试,而不是

Bundle extras = intent.getExtras(); 

String type = extras.getString("type"); 
Log.i("type", type); 

if(type.equals("message")){ 
    String msg = extras.getString("message"); 
    String avatar = extras.getString("photo"); 
    count = Integer.parseInt(extras.getString("count")); 
    Bitmap photo = getBitmapFromURL(avatar); 
    String theMessage = Html.fromHtml(msg).toString().replace("\\", ""); 
} 

,并看看会发生什么对类型logcat的。

希望它有帮助。

+0

嗨,看到我的更新。当我登录时,我收到了'message',但我认为它是第二个不起作用的声明,它是通知生成器的一部分。我试图做同样的检查,因为我不想使用这些参数,除非type ='message'。我希望这是明确的。 –

+0

你现在在“类型”中得到什么? –

+0

我得到了'消息'这是正确的。我相信我现在知道我的问题,只是不知道如何解决。出于某种原因,Java不会让你访问if语句之外的变量。我得到'不能解决变量'。但我知道它的确如此。我只用了不到一周的时间就处理了Java,所以很难调试我不了解的东西。 :/ –