나는 버튼 배열을 포함하는 GridView
와 간단한 테스트 응용 프로그램을 가지고, 나는 이러한 버튼 중 하나를 만지 작업 (모든 작업)을 수행하려고 해요.안드로이드 Null 포인터 예외 onClickListener 라인에
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:numColumns="auto_fit"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:columnWidth="90dp"
android:stretchMode="columnWidth"
android:gravity="center"
/>
그리고 oggetto.xml
은 다음 줄이 포함 :
package com.example.convert;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.GridView;
public class convert extends Activity {
//private ListView List;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String [] elenco = {
"ciao","questo","è","un esempio","Configurazione"
};
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,R.layout.oggetto,R.id.testogg,elenco);
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(arrayAdapter);
Button btn = (Button) (findViewById(R.id.testogg));
btn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
setContentView(R.layout.oggetto);
}
});
}
}
main.xml
은 다음과 같다 :
주요 코드는 이것이다
<?xml version="1.0" encoding="utf-8"?>
<Button
xmlns:android="http://schemas.android.com/apk/res/android"
android:text="@+id/TextView01"
android:layout_width="80dp"
android:layout_height="80dp"
android:id="@+id/testogg">
</Button>
하지만을 나는 실행하려고하면 신청서는 012에 NullPointerException
을 돌려줍니다.행.
버튼이 동일한 ID를 가지고 있기 때문에 그렇게 될 수 있습니까? 이 경우 다른 ID를 가진 반복 된 단추를 얻으려면 어떻게해야합니까?
도움 주셔서 감사합니다.
대단한 답변 !!! 이것은 나에게 내가 찾던 힌트를 줬다! 감사! 하지만 그렇다면 ... 내가 다른 XML에서로드 된보기를 어떻게 참조합니까? –
할 수 없습니다. 뷰는 팽창 될 때까지 존재하지 않습니다. 이는 컨텐츠 뷰를 main.xml로 설정할 때 발생합니다. XML 문서는 안드로이드에게 뷰를 생성하는 방법을 알려주는 청사진이다. 레이아웃 인플레이터는 실제 건물을 조작합니다. – kcoppock
다른 방법은 코드에서 새 Button을 만드는 것입니다. 이미 부풀려진 뷰에 그 버튼을 추가하는 것은 사소한 일이 아닙니다 (가능하다면 확실하지 않습니다). 동적 레이아웃이 필요한 경우 코드에서보기를 만들어야합니다. – Falmarri