2013-06-19 42 views
0

我想讓我的按鈕在OnClick()方法中開始一個新的活動,但它什麼都不做。我認爲這是因爲需要膨脹的視圖是LinearLayout LoginLayout,但我不知道如何引用它。如果按照在註釋塊中定義的方式定義按鈕,該按鈕會正常工作。ANDROID - OnClick()按鈕引用問題?

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

你應該使用活動情境,而不是'v.getContext使用按鈕()'。使用'getActivity()'。 http://developer.android.com/reference/android/app/Fragment.html#getActivity%28%29,並且由於您使用的是匿名內部類,因此還要刪除'implements OnClickListener' – Raghunandan

回答

1

,因爲你正在使用annonymous內部類

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(刪除implements OnClickListener )。

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); 
    } 
    }); 
0

我假設你使用android:onclick作爲佈局中的點擊事件?

如果是這樣,那麼如果你在一個活動中,你不需要使用實現OnClickListener。

如果您使用android:onclick =「login」,則調用public void login(View v)方法。

如果您嘗試在像這樣的片段中使用它,我的經驗是android:onClick不起作用。

在這種情況下,請按照拉古南丹的說法。

Button btnLogin = (Button) LoginLayout.findViewById(R.id.btn_Login); 
btnLogin.setOnClickListener(this); 

如果使用實現OnClickListener