0

我想让 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);

    }

}

}

4

2 回答 2

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);
   } 
   });
于 2013-06-19T18:43:55.743 回答
0

我假设您在布局中使用 android:onclick 作为点击事件?

如果是这样,那么如果您在活动中,则不需要使用实现 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 则使用按钮

于 2013-06-19T20:36:48.967 回答