Android 以编程方式将RelativeLayout 添加到TableLayout

发布于 2024-12-28 20:09:50 字数 5953 浏览 0 评论 0原文

所以,我决定学习编写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,暂停 58ms 01-24 11:30:15.967:D/AndroidRuntime(1625):关闭虚拟机 01-24 11:30:15.967:W/dalvikvm(1625):threadid = 1:线程因未捕获的异常而退出(组= 0x40015560) 01-24 11:30:15.977: E/AndroidRuntime(1625): 致命异常: main 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-24 11: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):在android.widget.TableLayout.addView(TableLayout.java:394) 01-24 11:30:15.977: E/AndroidRuntime(1625): 在 com.*.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=

So, I decided to learn to write Android apps. I prefer learning by writing code so I setup my environment and dived in to Android!

And hit my head :)

I am trying to add import RelativeLayout as TableRows to a Table view.

This is my table layout which I want to re-use,

 <?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>

I included it i my my main activity with

<?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>

Then, I created my Row with 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>

Now, I am trying this

 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);


}

But, i get NullPointerException. It can't find

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

I've also tried

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

What am I doing wrong?

Thanks

Log output

    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 freed 1K, 53% free 2538K/5379K, external 2250K/2810K, paused 58ms
01-24 11:30:15.967: D/AndroidRuntime(1625): Shutting down VM
01-24 11:30:15.967: W/dalvikvm(1625): threadid=1: thread exiting with uncaught exception (group=0x40015560)
01-24 11:30:15.977: E/AndroidRuntime(1625): FATAL EXCEPTION: main
01-24 11:30:15.977: E/AndroidRuntime(1625): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.*.HomeActivity}: java.lang.NullPointerException
01-24 11:30:15.977: E/AndroidRuntime(1625): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
01-24 11:30:15.977: E/AndroidRuntime(1625): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
01-24 11:30:15.977: E/AndroidRuntime(1625): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
01-24 11:30:15.977: E/AndroidRuntime(1625): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
01-24 11:30:15.977: E/AndroidRuntime(1625): at android.os.Handler.dispatchMessage(Handler.java:99)
01-24 11:30:15.977: E/AndroidRuntime(1625): at android.os.Looper.loop(Looper.java:123)
01-24 11:30:15.977: E/AndroidRuntime(1625): at android.app.ActivityThread.main(ActivityThread.java:3683)
01-24 11:30:15.977: E/AndroidRuntime(1625): at java.lang.reflect.Method.invokeNative(Native Method)
01-24 11:30:15.977: E/AndroidRuntime(1625): at java.lang.reflect.Method.invoke(Method.java:507)
01-24 11:30:15.977: E/AndroidRuntime(1625): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-24 11:30:15.977: E/AndroidRuntime(1625): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-24 11:30:15.977: E/AndroidRuntime(1625): at dalvik.system.NativeStart.main(Native Method)
01-24 11:30:15.977: E/AndroidRuntime(1625): Caused by: java.lang.NullPointerException
01-24 11:30:15.977: E/AndroidRuntime(1625): at android.view.ViewGroup.addView(ViewGroup.java:1821)
01-24 11:30:15.977: E/AndroidRuntime(1625): at android.widget.TableLayout.addView(TableLayout.java:403)
01-24 11:30:15.977: E/AndroidRuntime(1625): at 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): at com.*.onCreate(HomeActivity.java:23)
01-24 11:30:15.977: E/AndroidRuntime(1625): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-24 11:30:15.977: E/AndroidRuntime(1625): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
01-24 11:30:15.977: E/AndroidRuntime(1625): ... 11 more

    android:ellipsize=

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

云之铃。 2025-01-04 20:09:50

你必须使用LayoutInflater

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

you must use LayoutInflater

LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
RelativeLayout  row = (RelativeLayout ) layoutInflater.inflate(R.layout.upload_list_table_row_relative, null);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文