【问题标题】:Android Studio Error Cannot Resolve Symbol 'Extra Message'Android Studio 错误无法解析符号“额外消息”
【发布时间】:2017-05-14 14:36:31
【问题描述】:

我制作了一个测验程序,当我单击列表中的某个内容时,它会进入一个新课程,并带有额外的意图。

if (quiznumber.equals("Quiz One")){
                        String message = "Quiz One";
                        Intent gotosetone = new Intent(QuizSelectionActivity.this, CoolQuizActivity.class);
                        gotosetone.putExtra(EXTRA_MESSAGE, message);
                        startActivity(gotosetone);
                    }else if (quiznumber.equals("Quiz Two")){
                        String message = "Quiz Two";
                        Intent gotosettwo = new Intent(QuizSelectionActivity.this, CoolQuizActivity.class);
                        gotosettwo.putExtra(EXTRA_MESSAGE, message);
                        startActivity(gotosettwo);

所以我在下一节课有一个错误,coolquizactivity,看起来像这样

 Intent gotosetone = getIntent();
    String message = gotosetone.getStringExtra(QuizSelectionActivity.EXTRA_MESSAGE);
    Intent gotosettwo = getIntent();
    String message2 = gotosetone.getStringExtra(QuizSelectionActivity.EXTRA_MESSAGE);

但是 EXTRA_MESSAGE 是红色的,并且说,无法解析符号,EXTRA_MESSAGE

有人可以张贴如何解决此问题的图片吗? 谢谢

(顺便说一句,已经有一个问题,并且有一个答案,但我不知道如何解决它,我也无法要求图片,因为我有 1 个声望,我甚至不能发表评论!)

【问题讨论】:

  • 必须是public static....
  • 在上述问题中添加更多 QuizSelectionActivity 和 CoolQuizActivity 代码
  • k,请编辑它:D
  • 嗨丹尼尔,在以下答案后这个问题仍然存在吗?
  • 是的,确实如此! :(

标签: android


【解决方案1】:

您应该将 EXTRA_MESSAGE 声明为

    public static final String EXTRA_MESSAGE="mystring";

使用 'public static' 关键字,您可以从其他类访问此字符串变量,而无需创建类似的对象

    QuizSelectionActivity.EXTRA_MESSAGE

【讨论】:

    【解决方案2】:

    嗨,丹尼尔用代码和原因详细阐述了 Opiatefuchs 评论。 EXTRA_MESSAGE 是红色的,因为它在 QuizSelectionActivity 中声明,而 CoolQuizActivity 无权访问它。所以解决这个问题的一种方法是让它public static,这意味着变量EXTRA_MESSAGE现在可以被整个应用程序访问。所以在代码中是这样的

    public class QuizSelectionActivity extends Activity {
    
         public static final String EXTRA_MESSAGE = "extra_message";
    
         public void someFunction() {
             Intent intent = new Intent(QuizSelectionActivity.this, CoolQuizActivity.class);
             String message = ""; // default value
              if (quiznumber.equals("Quiz One")){
                        message = "Quiz One";
                    }else if (quiznumber.equals("Quiz Two")){
                        message = "Quiz Two";
               }
    
               intent.putExtra(EXTRA_MESSAGE, message);
               startActivity(intent);
         }
    }
    

    而另一个类 CoolQuizActivity 会像这样使用它 公共类 CoolQuizActivity 扩展 Activity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.your_layout);
             Intent intent = getIntent();
             // this is the message passed "Quiz One" or "Quiz Two"
             String message = intent.getStringExtra(QuizSelectionActivity.EXTRA_MESSAGE);
    
               // do action using the message passed
         }
    }
    

    注意在QuizSelectionActivity 中声明键时使用final,这意味着它的常量不能更改。 希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      • 1970-01-01
      • 2015-03-03
      • 1970-01-01
      相关资源
      最近更新 更多