저는 Android 프로그래밍에 비교적 익숙하지 않습니다. 이 주제에 관해 많은 스레드를 겪었지만 언급 된 솔루션 중 아무 것도 나를 위해 일하지 않았습니다. 여기 내가 뭘하려고하는거야. XML 파일을 사용하여 레이아웃 리소스를 만들고 MainActivity에서 setContentView (R.layout.activity_main)를 수행합니다. 나는 그때 내가 activity_main.xml 파일에 정의 된 기본 레이아웃을 수정하려고 View를 확장하는 커스텀 뷰 클래스를 가지고있다. 그러나, 언제든지 별도의 파일에 구현 된 사용자 정의보기의 findViewById (R.id.) 레이아웃 파일 (activity_main.xml)에서 뷰 ID를 얻으려고하면 항상 null이 반환됩니다. findViewById (...)를 사용하여 MainActivity 클래스에서 ID를 얻으려고하면 적절한 값을 얻습니다.
여기서 내가 뭘 잘못하고 있니? 여기View 클래스의 findViewById가 null을 반환하는 반면 Activity 클래스에서는 작동합니다.
모든 코드가
덕분에 여기
다음public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyView myView = new MyView(this, null);
....
이 파일 MyView.java 파일 "MainActivity.java"입니다
public class MyView extends View {
public static final String DEBUG_TAG = "MYVIEW" ;
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
View tablerow1 = (TableRow) findViewById (R.id.tableRow) ;
Log.v(DEBUG_TAG," tablerow1 = " + tablerow1 + "\n");
}
과 니펫 다음은 activity_main.xml 파일입니다.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/top_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TableLayout
android:id="@+id/tableLayout1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:background="@color/red"
android:shrinkColumns="*"
android:stretchColumns="*" >
<TableRow
android:id="@+id/tableRow1"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:gravity="center_horizontal">
<Button
android:id="@+id/button_00_1"
android:text="@string/button_1"
android:textStyle="bold"
android:background="@color/green"
android:layout_margin="0.5dp"
android:layout_width="0dp"
android:layout_weight="0.5"
android:typeface="serif"></Button>
</TableRow>
</TableLayout>
</LinearLayout>
MyView.java의 findViewById (...) 호출은 항상 null을 반환하고, MainActivity.java 파일에 포함하면 null이 아닌 적절한 값을 얻습니다.
누군가 여기서 잘못된 점을 지적 할 수 있습니까?
감사
덕분에 많이. 나는 하루 종일이 포럼과 다른 포럼을 검색 한 후에이 대답을 얻었다. 그것은 지금 일한다!! –
정말 물건 주조 .. 고마워. –