【问题标题】:Source not found error on button click to change activity单击按钮更改活动时未找到源错误
【发布时间】:2012-11-23 09:34:48
【问题描述】:

我只是试图通过单击按钮触发新活动,但每次单击所述按钮时,我都会收到一条错误消息,提示“未找到源”,下方带有“编辑源查找路径”。这似乎是一个非常常见的问题,通常似乎与 OnClickListener 方法或未指向正确文件的源路径相关。

这是原始活动的文件:

    public class MainActivity extends Activity {

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            Button btn = (Button) findViewById(R.id.homebutton2);
            btn.setOnClickListener(new View.OnClickListener(){
                public void onClick(View v) {
                    Intent intent = new Intent(v.getContext(), DisplayExplanation.class);
                    startActivityForResult(intent,0);   
                }
            });
        }

    }

我确信 OnClickListener 没有问题,因为如果我用 toast 替换 Intent,toast 看起来就很好。

我还重新启动了项目,以确保源路径正确;它指向正确的 .jar 文件和我的项目文件夹。 API 也与清单中的内容相匹配。

为了完整起见,这是我试图打开的活动:

public class DisplayExplanation extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_display_explanation);
    }

}

非常感谢您在这方面给我的任何帮助 - 好像我已经把头撞到墙上好几个小时了!

【问题讨论】:

    标签: android eclipse button android-intent


    【解决方案1】:

    使用

     Intent intent = new Intent(Current_Activity.this, DisplayExplanation.class);
                        startActivityForResult(intent,0); 
    

    而不是

    Intent intent = new Intent(v.getContext(), DisplayExplanation.class);
                        startActivityForResult(intent,0);  
    

    在单击按钮时启动新活动始终传递当前活动上下文而不是当前视图上下文,就像您传递启动活动的上下文一样

    【讨论】:

    • 检查是否在 manifest 中声明了 DisplayExplanation 类
    • 非常有用,非常感谢!正如怀疑的那样,我错过了一些简单的东西。
    • 另外,我可能应该为将来遇到此问题的任何人提一下,我在新活动中调用的 xml 文件没有正确编写。我有 Textview 而不是 TextView。令人惊讶的是,错过的资本可以带来多大的改变!
    【解决方案2】:

    试试这个...

    Intent intent= new Intent(getApplicationContext(),DisplayExplanation.class);
    
        startActivity(intent);
    

    而不是...

    Intent intent = new Intent(v.getContext(), DisplayExplanation.class);
                        startActivityForResult(intent,0);  
    

    【讨论】:

      【解决方案3】:

      替换

      Intent intent = new Intent(v.getContext(), DisplayExplanation.class);
      

      Intent intent = new Intent(MainActivity.this, DisplayExplanation.class);
      

      【讨论】:

      • 为什么?请添加描述性答案
      • @hotveryspicy 我认为这是不言自明的。因为他传递了错误的上下文。
      【解决方案4】:

      在下面找到正确的代码:

        public class MainActivity extends Activity {
      
                  @Override
                  public void onCreate(Bundle savedInstanceState) {
                      super.onCreate(savedInstanceState);
                      setContentView(R.layout.activity_main);
      
                      Button btn = (Button) findViewById(R.id.homebutton2);
                      btn.setOnClickListener(new View.OnClickListener(){
                          public void onClick(View v) {
                              Intent intent = new Intent(v.getContext(), DisplayExplanation.class);
                              **startActivity(intent);**  
                          }
                      });
                  }
      
              }
      

      你的错误是: startActivityForResult(intent,0);
      但是这里你需要使用

      开始活动(意图);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-05
        • 1970-01-01
        • 2013-09-26
        • 2018-04-13
        相关资源
        最近更新 更多