如何在按钮上正确使用intent caller?

时间:2014-06-20 13:03:34

标签: android class android-intent

实际上我对一些在一种情况下工作得很好的事情感到有点困惑,但是在其他方案中工作不正常所以我在这里解释我的问题以确定我做出的错误举动,如果有的话会识别问题请提一下。谢谢。

工作正常:

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

    findViewById(R.id.distance_demo_button).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
        Intent intent = new Intent(MainActivity.this, ListViewClass.class);
        intent.putExtra(ListViewClass.EXTRAS_TARGET_ACTIVITY, Distance.class.getName());
        startActivity(intent);
      }
    });

NOt正常工作:

scan = (Button) view.findViewById(R.id.scan);
    scan.setOnClickListener(startListener);


    }

 //Create an anonymous implementation of OnClickListener
  private OnClickListener startListener = new OnClickListener() {
   public void onClick(View v) {
       Toast.makeText(view.getContext(),"Scanning", Toast.LENGTH_SHORT).show();



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


           intent.putExtra(ListViewClass.EXTRAS_TARGET_ACTIVITY, Distance.class.getName());
            startActivity(intent);
       }
}

现在问题出在这一行

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

当我在这个场景中使用这一行时,它会在这一行显示错误:

Error: 'The constructor Intent(MainActivity, Class<ListViewClass>) is undefined'如果您对此有充分的了解,请提及我的问题。

3 个答案:

答案 0 :(得分:0)

使用全局上下文变量glaboaly并使用它。

Context myContext;
 @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    myContext = MyActivity.this;
}

并使用myContext MainActivity.this。 我不确定它是否解决了问题,只是尝试一下

答案 1 :(得分:0)

在MainActivity类中调用Intent intent = new Intent(MainActivity.this, ListViewClass.class);时。它会工作正常。但是当你不在MainActivity class的语境中时。即转移到其他班级。将发生此错误。

如果你想纠正,你可以遵循@jithu方法。否则将上下文存储在Application类中。并在任何地方使用它。

答案 2 :(得分:0)

在第一种情况下,您将覆盖方法 onClick()。 如果您覆盖该方法,就像在声明活动类中的功能一样。 这就是您可以调用 MainActivity.this

的原因

在第二种情况下,您正在实现抽象方法 onClick()。您无法调用 MainActivity.this ,因为您的&#34; MainActivity.this &#34;正在引用当前上下文,并且无法从 OnClickListener.class 访问它。