저는 현재 Android 개발을 처음 사용하고 있으며 이전 연구에서 해결을 돕지 못하는 문제가 발생했습니다. 그래서 같은 활동의 해당 XML 조각 파일에 선언 된 텍스트 뷰 객체를 잡기 위해 안드로이드 활동에 같이 findViewById()를 사용하고 있습니다 :findViewById() null을 반환합니다.
public void scanLocalApk() {
//get the list of apks in the default downloads directory
ArrayList<File> foundAPKs = findApksInDownloadDirectory();
//display the list of found apks
String apkListString = "";
if (foundAPKs != null)
for (File f : foundAPKs)
apkListString += (f.getName() + "\n");
TextView displayApksTextView = (TextView) findViewById(R.id.display_apks);
displayApksTextView.setText(apkListString);
TextView apkToInstallTextView = (TextView) findViewById(R.id.label_apk_to_install);
apkToInstallTextView.setVisibility(View.VISIBLE);
EditText apkToInstallEditText = (EditText) findViewById(R.id.apk_to_install);
apkToInstallEditText.setVisibility(View.VISIBLE);
}
NullPointerException이이 줄에서 발생되는 : displayApksTextView.setText (apkListString) ; 위 행의 findViewById 호출이 null을 반환하기 때문에.
자원 "display_apks"
여기에 "fragment_scan_local_apk.xml"에 정의되어 있습니다 : 웹 주위<TextView android:id="@+id/display_apks"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
이전에 언급 한 솔루션 (즉 된 setContentView을 보장하기 위해 말했다) findViewById를() 이상이라고하지만, 내 그것이 코드입니다.
누구에게 어떤 문제가있을 수 있습니까?
편집 : 요청에 따라, 내가 된 setContentView()를 호출 여기
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scan_local_apk);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
//branch to a logic method
scanLocalApk();
}
당신은'setContentView' 메소드를 호출하는 코드를 제공 할 수 있습니까? – Zyn
수정 됨. 봐 주셔서 감사합니다. – MawrCoffeePls
아, 그건 이해가되지만, 그럼 어떻게 프래그먼트의 뷰 계층 구조에서 뷰를 찾을 수 있습니까? 또는 부분의 XML 파일에서 구성 요소 정의를 활동의 XML 파일로 이동해야합니까? – MawrCoffeePls