2016-08-22 74 views
-2

intdelay在代码的开头被初始化为1000。 我试图确保intdelay的值由编辑框中的值更新,方法是单击按钮时添加一个烤面包。 但是当我运行应用程序,我得到以下问题:按钮内的按钮OnclickListener不起作用

Error:(46, 22) error: no suitable method found for makeText(<anonymous OnClickListener>,String,int) 
method Toast.makeText(Context,CharSequence,int) is not applicable 
(argument mismatch; <anonymous OnClickListener> cannot be converted to Context) 
method Toast.makeText(Context,int,int) is not applicable 
(argument mismatch; <anonymous OnClickListener> cannot be converted to Context) 

这是我的代码的一部分:

@Override 
     protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     delayedttxt=(EditText)findViewById(R.id.delayedttxt); 

    String delay=delayedttxt.getText().toString();  //this will get a string 
    try{ 
     int intdelay = Integer.parseInt(delay); 
    }catch(NumberFormatException ex){ // handle your exception 
    } 

    Button btn=(Button)findViewById(R.id.btn); 
    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      flashLight.switchFlash(); 
      Toast.makeText(this,"your integer is " + intdelay , Toast.LENGTH_LONG).show(); 
     } 

    }); 

我该如何解决呢?

+0

调试你的代码,我认为flashLight.switchFlash();这有个例外 – YUVRAJ

+1

容易的问题!大家都在回答 –

回答

1

这是因为makeText希望有一个Context作为第一个参数。您位于OnClickListeneronClick函数中。这意味着this指向您的OnClickListener
你必须有这样的事情

Toast.makeText(YourActivity.this,"your integer is " + intdelay , Toast.LENGTH_LONG).show(); 
+0

太棒了!它的工作 – Aloweiwi

0

尝试这样的:

Toast.makeText(YourActivityName.this,"your integer is " + intdelay , Toast.LENGTH_LONG).show(); 
+0

太棒了!它的工作 – Aloweiwi

+0

如果它的工作比接受我的回答 –

0

变化的背景下,如果不somwthing可能错在flashLight.switchFlash方法

3

你给了错误的环境下; 改变这一行:

Toast.makeText(this,"your integer is " + intdelay , Toast.LENGTH_LONG).show(); 

Toast.makeText(YourActivity.this,"your integer is " + intdelay , Toast.LENGTH_LONG).show(); 
+0

太棒了! 它的工作 – Aloweiwi

+0

你可以接受这个答案。 –

0

您正在试图展示OnClickListener里面你的面包。在这种情况下,this关键字是指OnClickListener类型的实例,而不是Context,就像它是必需的。

您应该使用<YourActivityClass>.this来引用封闭活动实例,即Context,并且可用于显示敬酒。

0

尝试插入这行代码:

Toast.makeText(getApplicationContext(),"your integer is " + intdelay , Toast.LENGTH_LONG).show(); 
0

请在您的活动做这些,

Toast.makeText(getApplicationContext(),"your integer is " + intdelay , Toast.LENGTH_LONG).show(); 
0

你应该改变从

Toast.makeText(this,"your integer is " + intdelay , Toast.LENGTH_LONG).show(); 

Toast.makeText(getContext(),"your integer is " + intdelay , Toast.LENGTH_LONG).show();