2013-06-05 1 views
0

내 응용 프로그램 충돌, 그리고 난이 로그 캣을 얻을 :java.lang.InstantiationException : 클래스를 인스턴스화 할 수 없습니다. 빈 생성자

android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment kostas.menu.rssreader.ListActivity$SampleListFragment: make sure class name exists, is public, and has an empty constructor that is public 
+2

아니, 아니, 아니! 혼자서 활동을 결코 인스턴스화해서는 안됩니다! 그리고 여러분은 결코 자신의 활동에 생성자를 구현해서는 안됩니다! 그렇게하지 마! 그만, 당장! – WarrenFaith

+0

@blackbelt이 방법은 당신의 새로운 액티비티로 데이터를 전달하고, 의도 된 것을 여분으로 사용하고, 생성자에서 매개 변수를 사용하지 않으려면 나를 오류 –

+0

으로 반환합니다 ... – WarrenFaith

답변

1

당신의 활동은 기본 생성자를 정의하지 않습니다. titleRes를 생성자 매개 변수로 전달하는 대신 추가 의도로 전달하십시오.

Intent i = new Intent(this, ListActivity.class); 
i.putExtra("titleResId", R.string.my_title); 
startActivity(i); 
+0

액티비티에는 생성자가 없어야합니다! 위와 같은 오류 만 발생합니다. 생성자가 있어야한다고 말하지 마라. – WarrenFaith

+0

저는 동의하지 않습니다. 때로는 생성자가 완벽하게 멋지게 표시됩니다 (예를 들어, 기본 추상 액티비티 클래스를 만들 때). 당신이 당연히하고있는 것을 당신이 아는 한. 그에 따라 대답을 업데이트했습니다. –

+0

@ MarvinLabs, 나는 길을 따라 갔지만 여전히 첫 번째 logcat 오류가 발생했습니다. –

-1

ListActivity의 슈퍼 클래스는 SlidingFragmentActivity 클래스는 생성자를 가지고 있지 의미 : 귀하의 경우,

public onCreate(...) { 
    titleRes = getIntent().getIntExtra("titleResId", R.string.default_title); 
} 

활동을 시작하려면) 당신은 모든 생성자를 정의 할 필요가 없습니다, 그래서 당신은 그것을 생략 할 수 있습니다 int를 사용하면 super()을 ListActivity의 클래스 생성자에서 첫 번째 문으로 호출해야합니다. 타격 코드를 살펴보십시오. 이 당신을 도울 것입니다

public ListActivity(int titleRes) { 
    super(); 
    mTitleRes = titleRes; 
} 

희망 ... :)

+0

미안하지만, 같은 오류를 반환한다 ... –

관련 문제