如果要对button做一个监听
常见的一种写法:
button0.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent0 = new Intent(Activity.this,ActivityFrameLayout.class);
startActivity(intent0);
}
});
如果是在Fragment中,intent的第一个参数context就不能用activity.this,而是要用getActivity().
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container,
false);
//liwei add
spinner_button = (Button)rootView.findViewById(R.id.spinner_button);
<span style="background-color: rgb(51, 153, 153);">spinner_button.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
//Intent it = new Intent();
//it.setClass(getActivity(), SpinnerActivity.class);
Intent it = new Intent(getActivity(),SpinnerActivity.class);
startActivity(it);
}
}
);</span>
return rootView;
}
}
有点费解,如果分解开就好理解了.
这个写法可以分解如下:
public class MainActivity extends ActionBarActivity {
OnClickListener listener0 = null;
Button button0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
listener0 = new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent0 = new Intent(Activity.this,ActivityFrameLayout.class);
setTitle("FrameLayout");
startActivity(intent0);
}
};
setContentView(R.layout.activity_main);
button0 = (Button)findViewById(R.id.button0);
button0.setOnClickListener(listener0);
也有这样写的:
private Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button1);
<span style="background-color: rgb(51, 153, 153);">button.setOnClickListener(this);</span>
}
@Override
public void onClick(View v) {
Toast.makeText(getApplication(), "OnClick", Toast.LENGTH_LONG).show();
}