Android программно добавляет RelativeLayout в TableLayout - PullRequest
0 голосов
/ 24 января 2012

Итак, я решил научиться писать приложения для Android.Я предпочитаю учиться, написав код, поэтому я настроил свою среду и погрузился в Android!

И ударился головой:)

Я пытаюсь добавить импорт RelativeLayout как TableRows в представление таблицы.

Это мой макет таблицы, который я хочу использовать повторно,

 <?xml version="1.0" encoding="utf-8"?>   
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/upload_list_table"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:stretchColumns="*" >

</TableLayout>

Я включил его в свою основную деятельность с

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/home_activity"
  android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical" >

<include android:id="@+id/homeActivityUploadList" layout="@layout/upload_list_table" />
</LinearLayout>

Затем я создал свою строку с помощью RelativeLayout

<?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/upload_list_table_row_relative"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip" >



<ImageView
    android:id="@+id/fileThumb"
    android:layout_width="90px"
    android:layout_height="fill_parent"
    android:layout_alignParentTop="true"
    android:layout_gravity="left"
    android:padding="2px"

    android:src="@drawable/nothumb" />

<TextView
    android:id="@+id/fileDescription"
    android:layout_width="fill_parent"
    android:layout_height="26dip"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_toRightOf="@id/fileThumb"
    android:ellipsize="marquee"
    android:singleLine="true"
    android:text="Desc" />


<TextView
    android:id="@+id/fileTitle"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_above="@id/fileDescription"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_alignWithParentIfMissing="true"
    android:layout_toRightOf="@id/fileThumb"
    android:gravity="center_vertical"
    android:text="Title" />

 </RelativeLayout>

Теперь я пытаюсьэто

 public class HomeActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.home_activity);


    TableLayout tbl = (TableLayout)findViewById(R.id.homeActivityUploadList);
    RelativeLayout row = (RelativeLayout)findViewById(R.layout.upload_list_table_row_relative);

    tbl.addView(row);


}

Но я получаю исключение NullPointerException.Не удается найти

RelativeLayout row = (RelativeLayout)findViewById(R.layout.upload_list_table_row_relative);

Я также пытался

RelativeLayout row = (RelativeLayout)findViewById(R.id.upload_list_table_row_relative);

Что я делаю не так?

Спасибо

Вывод журнала

    01-24 11:30:15.757: D/dalvikvm(1625): GC_EXTERNAL_ALLOC freed 46K, 53% free    2539K/5379K, external 1625K/2137K, paused 68ms

01-24 11: 30: 15,877: D / dalvikvm (1625): GC_EXTERNAL_ALLOC освобожден 1K, 53% свободен 2538K / 5379K, внешний 2250K / 2810K, приостановлен 58мс 01-24 11: 30: 15.967: D / AndroidRuntime (1625): завершение работы VM 01-24 11: 30: 15.967: W / dalvikvm (1625): threadid = 1: поток завершается с необработанным исключением (группа = 0x40015560) 01-24 11: 30: 15.977:E / AndroidRuntime (1625): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основной 01-24 11: 30: 15.977: E / AndroidRuntime (1625): java.lang.RuntimeException: Невозможно запустить действие ComponentInfo {com. * .HomeActivity}: java.lang.NullPointerException 01-24 11: 30: 15.977: E / AndroidRuntime (1625): на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:1647) 01-24 11:30: 15.977: E / AndroidRuntime (1625): на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:1663) 01-24 11: 30: 15.977: E / AndroidRuntime (1625): на android.app.ActivityThread.access $ 1500 (ActivityThread.java:117) 01-24 11: 30: 15.977: E / AndroidRuntime (1625): на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:931) 01-24 11:30: 15.977: E / AndroidRuntime (1625): на android.os.Handler.dispatchMessage (Handler.java:99) 01-24 11: 30: 15.977: E / AndroidRuntime (1625): на android.os.Looper.loop (Looper.java:123) 01-24 11: 30: 15.977: E / AndroidRuntime (1625): на android.app.ActivityThread.main (ActivityThread.java:3683) 01-24 11: 30: 15.977: E / AndroidRuntime (1625): в java.lang.reflect.Method.invokeNative (собственный метод) 01-24 11: 30: 15.977: E / AndroidRuntime (1625): в java.lang.reflect.Method.invoke (Method.java:507)01-24 11: 30: 15.977: E / AndroidRuntime (1625): на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:839) 01-24 11: 30: 15.977: E / AndroidRuntime (1625): на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:597) 01-24 11: 30: 15.977: E / AndroidRuntime (1625): на dalvik.system.NativeStart.main (собственный метод)01-24: 11: 30: 15.977: E / AndroidRuntime (1625): вызвано: java.lang.NullPointerException 01-24 11: 30: 15.977: E / AndroidRuntime (1625): в android.view.ViewGroup.addView (ViewGroup.java:1821) 01-2411: 30: 15.977: E / AndroidRuntime (1625): на android.widget.TableLayout.addView (TableLayout.java:403) 01-24 11: 30: 15.977: E / AndroidRuntime (1625): на android.view.ViewGroup.addView (ViewGroup.java:1808) 01-24 11: 30: 15.977: E / AndroidRuntime (1625): at android.widget.TableLayout.addView (TableLayout.java:394) 01-24 11: 30: 15.977: E/ AndroidRuntime (1625): по тел. * .onCreate (HomeActivity.java:23) 01-24 11: 30: 15.977: E / AndroidRuntime (1625): по адресу android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1047) 01-24 11: 30: 15.977: E / AndroidRuntime (1625): на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:1611) 01-24 11: 30: 15.977: E / AndroidRuntime (1625): ... еще 11

    android:ellipsize=

1 Ответ

2 голосов
/ 24 января 2012

вы должны использовать LayoutInflater

LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
RelativeLayout  row = (RelativeLayout ) layoutInflater.inflate(R.layout.upload_list_table_row_relative, null);
...