2013-11-23 5 views
39

तो मैं कुछ शोध किया है, और कोडएंड्रॉयड स्टूडियो में बटन क्लिक करें घटना को जोड़ने का तरीका

private Button buttonname; 
buttonname = (Button) findViewById(R.id.buttonnameinandroid) ; 
यहाँ

द्वारा एक वस्तु के रूप में आप बटन को परिभाषित करने के बाद

buttonname.setOnClickListener(this); //as I understand it, the "**this**" denotes the current `view(focus)` in the android program 

तो मेरी समस्या है आपके OnClick() घटना ...

समस्या:

जब मैं "इस" में लिखते हैं, कहते हैं:

setOnClickListener (Android.View.view.OnClickListener) in View cannot be applied to (com.helloandroidstudio.MainActivity) 

मुझे नहीं पता क्यों?

यहाँ जावा फाइल से कोड है

import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class MainActivity extends ActionBarActivity { 

    private Button btnClick; 
    private EditText Name, Date; 
    private TextView msg, NameOut, DateOut; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     btnClick = (Button) findViewById(R.id.button) ; 
     btnClick.setOnClickListener(this); 
     Name = (EditText) findViewById(R.id.textenter) ; 
     Date = (EditText) findViewById(R.id.editText) ; 
     msg = (TextView) findViewById(R.id.txtviewOut) ; 
     NameOut = (TextView) findViewById(R.id.txtoutName) ; 
     DateOut = (TextView) findViewById(R.id.txtOutDate) ; 
     if (savedInstanceState == null) { 
      getSupportFragmentManager().beginTransaction() 
        .add(R.id.container, new PlaceholderFragment()) 
        .commit(); 
     } 
    } 

    public void onClick(View v) 
    { 
     if (v == btnClick) 
     { 
      if (Name.equals("") == false && Date.equals("") == false) 
      { 
       NameOut = Name; 
       DateOut = Date; 
       msg.setVisibility(View.VISIBLE); 
      } 
      else 
      { 
       msg.setText("Please complete both fields"); 
       msg.setVisibility(View.VISIBLE); 
      } 
     } 
     return; 

    } 

उत्तर

48

SetOnClickListener (Android.View.view.OnClickListener) देखें में (com.helloandroidstudio.MainActivity)

यह (अपने वर्तमान परिदृश्य की वजह से) दूसरे शब्दों में इसका मतलब के लिए लागू नहीं जा सकता है कि अपने OnClickListener लागू करने की आवश्यकता MainActivity:

public class Main extends ActionBarActivity implements View.OnClickListener { 
    // do your stuff 
} 

यह:

buttonname.setOnClickListener(this); 

मतलब है कि आप अपने बटन -> इस उदाहरण OnClickListener का प्रतिनिधित्व करता है "इस उदाहरण पर" के लिए और इस कारण से अपनी कक्षा कि इंटरफ़ेस को लागू करने के लिए है के लिए श्रोता प्रदान करना चाहते हैं।

यह गुमनाम श्रोता वर्ग के साथ इसी तरह (है कि आप भी उपयोग कर सकते हैं) है:

buttonname.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View view) { 

    } 
}); 
1

// के रूप में मैं इसे समझ, "इस" वर्तमान (फोकस) दृश्य एंड्रॉयड कार्यक्रम में अर्थ है

नहीं, "यह" केवल तभी काम करेगा यदि MainActivitythis द्वारा संदर्भित View.OnClickListener लागू करता है, जो setOnClickListener() विधि के लिए पैरामीटर प्रकार है। इसका मतलब है कि आपको MainActivity में View.OnClickListener लागू करना चाहिए।

2

जब आप एक OnClickListener (या किसी भी श्रोता) इस तरह से

btnClick.setOnClickListener(this); 

आप implementOnClickListener की जरूरत को परिभाषित आपके Activity में।

public class MainActivity extends ActionBarActivity implements OnClickListener{ 
2
public class MainActivity extends AppCompatActivity implements View.OnClickListener 

जब भी आप क्लिक घटनाओं पर (यह) का उपयोग करें, अपने मुख्य गतिविधि ocClickListener कार्यान्वित करना होगा। एंड्रॉइड स्टूडियो यह आपके लिए करता है, 'इस' शब्द पर alt + एंटर दबाएं।

0
public class MainActivity extends Activity { 

    Button button; 

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

     button = (Button) findViewById(R.id.submitButton); 
     button.setOnClickListener(new MyClass()); 

    } 

    public class MyClass implements View.OnClickListener { 

     @Override 
     public void onClick(View v) { 

     } 

    } 
} 
1
package com.mani.helloworldapplication; 

import android.app.Activity; 
import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.View; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.Button; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MainActivity extends Activity implements View.OnClickListener { 
    //Declaration 
    TextView tvName; 
    Button btnShow; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     //Empty Window 
     super.onCreate(savedInstanceState); 
     //Load XML File 
     setContentView(R.layout.activity_main); 

     //Intilization 
     tvName = (TextView) findViewById(R.id.tvName); 
     btnShow = (Button) findViewById(R.id.btnShow); 

     btnShow.setOnClickListener(this); 

    } 

    @Override 
    public void onClick(View v) 
    { 
     String name = tvName.getText().toString(); 
     Toast.makeText(MainActivity.this,name,Toast.LENGTH_SHORT).show(); 
    } 
} 
+1

:

public class MainActivity extends Activity implements View.OnClickListener{ // YOUR CODE } 

और अंदर MainActivity विधि onClick(), इस तरह ओवरराइड क्या आप अपने उत्तर में कोई विवरण दे सकते हैं? – Patrick

0

गतिविधि जावा वर्ग में आप एक विधि पहले की आवश्यकता होगी के रूप में बटन को देखते खोजने के लिए: क्लिक श्रोता पर इस सेट के बाद

btnSum =(Button)findViewById(R.id.button); 

btnSum.setOnClickListener(new View.OnClickListener() { 

और अपनी कार्यक्षमता के लिए ऑनक्लिक विधि ओवरराइड करें। मुझे यहां एक पूरी तरह से काम करने वाला उदाहरण मिला है: http://javainhouse.blogspot.in/2016/01/button-example-android-studio.html

7
package com.mani.smsdetect; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity extends Activity implements View.OnClickListener { 

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

     //Intialization Button 

     btnClickMe = (Button) findViewById(R.id.btnClickMe); 

     btnClickMe.setOnClickListener(MainActivity.this); 
     //Here MainActivity.this is a Current Class Reference (context) 
    } 

    @Override 
    public void onClick(View v) { 

     //Your Logic 
    } 
} 
3
Button button= (Button)findViewById(R.id.buttonId); 
button.setOnClickListener(new View.OnClickListener(){ 
@Override 
public void onClick(View view) { 
    // click handling code 
    } 
}); 
+0

यह उत्तर निश्चित रूप से गलत नहीं है, लेकिन सामान्य रूप से, उत्तर समस्या को ठीक करने के लिए केवल _what_ करने के बजाय, _why_ के काम के बजाय, यदि वे काम करते हैं, तो कुछ उपयोगी होते हैं (और अधिक होने की संभावना अधिक होती है)। समुदाय में आपका स्वागत है! –

1

अपने OnClickListener शुरू है, लेकिन जब आप पहली बार के लिए स्थापित कोष्ठक के लिए मिलता है, नए, फिर देखें, टाइप तरीके और एंटर दबाए। इस तरह दिखना चाहिए आपका काम हो गया जब:

Button btn1 = (Button)findViewById(R.id.button1); 

btn1.setOnClickListener(new View.OnClickListener() {    
    @Override 
    public void onClick(View v) { 
//your stuff here. 
    } 
}); 
0

आपका ActivityView.OnClickListener को लागू करना चाहिए, इस तरह:

@override 
public void onClick (View view){ 
//here YOUR Action response to Click Button 
} 
संबंधित मुद्दे