我想让OnClick()方法中的按钮启动一个新活动,但它不会做任何事情。我认为这是因为需要膨胀的视图是LinearLayout LoginLayout,但我不知道如何引用它。如果按照在注释块中定义的方式定义按钮,该按钮可以正常工作。
public class LoginActivity extends Fragment implements OnClickListener {
/*
* (non-Javadoc)
*
* @see
* android.support.v4.app.Fragment#onCreateView(android.view.LayoutInflater,
* android.view.ViewGroup, android.os.Bundle)
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (container == null) {
return null;
}
LinearLayout LoginLayout = (LinearLayout) inflater.inflate(
R.layout.activity_login, container, false);
/*
* Button btnLogin = (Button) LoginLayout.findViewById(R.id.btn_Login);
* btnLogin.setOnClickListener(new View.OnClickListener() {
*
* @Override public void onClick(View v) {
*
* Intent intent = new Intent(v.getContext(), Blankactivity.class);
* v.getContext().startActivity(intent);
*
*
* } });
*/
return LoginLayout;
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.btn_Login) {
Intent intent = new Intent(v.getContext(), Blankactivity.class);
v.getContext().startActivity(intent);
startActivity(intent);
}
}
}
答案 0 :(得分:1)
删除implements OnClickListener
,因为您使用的是匿名内部类
public class LoginActivity extends Fragment {
...
}
同时删除以下
@Override
public void onClick(View v) {
if (v.getId() == R.id.btn_Login) {
Intent intent = new Intent(v.getContext(), Blankactivity.class);
v.getContext().startActivity(intent);
startActivity(intent);
}
您应该使用活动上下文而不是v.getContext()。
http://developer.android.com/reference/android/app/Fragment.html#getActivity%28%29
使用getActivity()
获取活动上下文。
Button btnLogin = (Button) LoginLayout.findViewById(R.id.btn_Login);
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), Blankactivity.class);
startActivity(intent);
}
});
答案 1 :(得分:0)
我假设您使用android:onclick来处理布局中的click事件?
如果是,那么如果您在活动中,则不需要使用implements OnClickListener。
如果您使用android:onclick =“login”,则调用public void login(View v)方法。
如果你试图在像这样的片段中使用它我的经验是android:onClick不起作用。
在那种情况下,做Raghunandan所说的。
或
Button btnLogin = (Button) LoginLayout.findViewById(R.id.btn_Login);
btnLogin.setOnClickListener(this);
如果使用实现onClickListener
,则使用该按钮