だから私はいくつかの研究を行っており、コードによってボタンをオブジェクトとして定義した後
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()
イベント...
問題:
「this」と入力すると、次のように表示されます。
setOnClickListener (Android.View.view.OnClickListener) in View cannot be applied to (com.helloandroidstudio.MainActivity)
理由がわからない
これは.Javaファイルのコードです
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;
}
ViewのSetOnClickListener(Android.View.view.OnClickListener)を(com.helloandroidstudio.MainActivity)に適用できません
これは、言い換えれば(現在のシナリオによる)、MainActivityがOnClickListenerを実装する必要があることを意味します。
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) {
}
});
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
}
}
Button button= (Button)findViewById(R.id.buttonId);
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
// click handling code
}
});
public class MainActivity extends AppCompatActivity implements View.OnClickListener
クリックイベントで(this)を使用する場合は常に、メインアクティビティでocClickListenerを実装する必要があります。 Android Studioが自動的に行います。「this」という単語でAlt + Enterキーを押します。
OnClickListener
(または任意のリスナー)をこのように定義すると
btnClick.setOnClickListener(this);
implement
のOnClickListener
をActivity
にする必要があります。
public class MainActivity extends ActionBarActivity implements OnClickListener{
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();
}
}
OnClickListenerを起動しますが、最初に設定された括弧に到達したら、「new」と入力し、次に「View」と入力してEnterキーを押します。完了したら、次のようになります。
Button btn1 = (Button)findViewById(R.id.button1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//your stuff here.
}
});
//私が理解したように、「this」はAndroidプログラムの現在のビュー(フォーカス)を示します
いいえ、「これ」は、MainActivity
によって参照されるthis
がsetOnClickListener()
メソッドのパラメーター型であるView.OnClickListener
を実装している場合にのみ機能します。 MainActivity
にView.OnClickListener
を実装する必要があることを意味します。
Activity
は、次のようにView.OnClickListener
を実装する必要があります。
public class MainActivity extends
Activity implements View.OnClickListener{
// YOUR CODE
}
そしてMainActivity
内で、次のようにメソッドonClick()
をオーバーライドします。
@override
public void onClick (View view){
//here YOUR Action response to Click Button
}
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) {
}
}
}
activity Javaクラスでは、次のようにボタンのビューを見つけるために最初にメソッドが必要です。
btnSum =(Button)findViewById(R.id.button);
クリックリスナーのこの設定後
btnSum.setOnClickListener(new View.OnClickListener() {
機能のためにonClickメソッドをオーバーライドします。ここで完全に機能する例を見つけました: http://javainhouse.blogspot.in/2016/01/button-example-Android-studio.html