그래서 안드로이드에서 내 뷰가 RelativeLayout, LinearLayout, ScrollView 등의 하위 클래스로 서브 클래 싱되는 MVC 패턴을 구현하고 있습니다. 내 뷰 내에서 뷰를 유지하려고 할 때까지 작동합니다. 나는 NPE를 얻는다. 생성자와 onAttachedToWindow()에서 onClickListener를 설정하기 위해 뷰에 액세스를 시도했지만 두 위치 모두에서 NPE를 얻습니다.MVC의 일부로 사용자 지정보기를 구현하는 방법은 무엇입니까?
예를 들어, 다음 뷰 클래스는 다음과 같습니다
public class ViewAchievements extends LinearLayout
{
private RelativeLayout mRelativeLayoutAchievement1;
public ViewAchievements(Context context, AttributeSet attrs)
{
super(context, attrs);
mRelativeLayoutAchievement1 = (RelativeLayout) findViewById(R.id.relativeLayout_achievement1);
mRelativeLayoutAchievement1.setOnClickListener((OnClickListener) context); //NPE on this line
}
@Override
protected void onAttachedToWindow()
{
super.onAttachedToWindow();
mRelativeLayoutAchievement1.setOnClickListener(mOnClickListener); //Also get NPE on this line
}
}
사람이 경우 mRelativeLayoutAchievement1에, 나에게 내 파단의 보류를 얻을 수있는 적절한 방법을 알려 주시기 바랍니다 수 있습니까?
는 여기에 XML 조각입니다 :
<com.beachbody.p90x.achievements.ViewAchievements xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/gray_very_dark"
android:orientation="vertical" >
<!-- kv Row 1 -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:orientation="horizontal"
android:layout_weight="1"
android:baselineAligned="false">
<RelativeLayout
android:id="@+id/relativeLayout_achievement1"
style="@style/linearLayout_achievement"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_margin="@dimen/margin_sm"
android:layout_weight="1" >
<TextView
android:id="@+id/textView_achievement1"
style="@style/text_small_bold_gray"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="@dimen/margin_large"
android:text="1/20" />
</RelativeLayout>
...
그리고 여기 내 활동에서보기를 만드는거야 방법은 다음과 같습니다 당신은 뷰의 생성자 동안 아이 뷰를 얻기 위해 노력하고
public class ActivityAchievements extends ActivitySlidingMenu
{
private ViewAchievements mViewAchievements;
@Override
public void onCreate(Bundle savedInstanceState)
{
mViewAchievements = (ViewAchievements) View.inflate(this, R.layout.view_achievements, null);
setContentView(mViewAchievements);
...
제안 해 주셔서 감사합니다. onAttachedToWindow(), setOnClickListener() 퍼팅 시도했지만 여전히 NPE 가져옵니다. 다른 제안? 위의 활동 코드를 추가했습니다. –