2016-01-16 36 views
0

我是Android的初學者。 我讀過一些書。我創建複選框setOnCheckedChangeListener(this)error

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.CheckBox; 
import android.widget.CompoundButton; 
import android.widget.CompoundButton.OnCheckedChangeListener; 

public class MainActivity extends AppCompatActivity implements OnCheckedChangeListener { 
CheckBox cb; 

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

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 

      cb = (CheckBox) findViewById(R.id.mycheckbox); 
      cb.setOnCheckedChangeListener(this); 
     } 
    }); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

@Override 
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
    if (isChecked) { 
     cb.setText("Checked"); 
    } else { 
     cb.setText("UnCheck"); 
    } 
} 

}

使用時cb.setOnCheckedChangeListener(本);機器人工作室錯誤:在CompoundButton setOnCheckedChangeListener(android.widget.CompoundButton.OnCheckedChangeListener)不能應用(匿名android.view.View.onClickListener)

如果我改變代碼如:

cb.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

    @Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
     //do stuff 

    } 
});  

然後確定

你能幫助我嗎?我想用「這個」。

回答

1

使用MainActivity.this代替this

cb.setOnCheckedChangeListener(MainActivity.this); 

因爲在當前的代碼this指按鈕onClick方法上下文而不是MainActivity類,其中OnCheckedChangeListener接口中實現。

+0

非常感謝 –

相關問題