Я относительно новичок в программировании под Android. Я просмотрел много тем по этой теме, но ни одно из упомянутых решений не работает для меня. Вот что я пытаюсь. Я пытаюсь создать ресурс макета с файлом XML, и в моем MainActivity я делаю setContentView (R.layout.activity_main). Затем у меня есть собственный класс представления, который расширяет представление, в котором я пытаюсь изменить макет по умолчанию, определенный в файле activity_main.xml. Однако каждый раз, когда я пытаюсь получить идентификатор представления с помощью findViewById (R.id.) (Из файла макета activity_main.xml) в пользовательском представлении, реализованном в отдельном файле, я всегда получаю значение null. Если я попытаюсь получить идентификатор в классе MainActivity с помощью findViewById (...), я получу правильное значение.
Что я здесь делаю не так?
Вот все фрагменты кода
Благодарность
Вот файл "MainActivity.java"
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
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>
Вызов findViewById (...) в MyView.java всегда возвращает значение null, тогда как, если я включаю его в файл MainActivity.java, я получаю правильные ненулевые значения.
Может кто-нибудь указать, что здесь не так?
Благодарность