2016-08-22 103 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();