【问题标题】:cant use Textviews and buttons in the code不能在代码中使用 Textviews 和按钮
【发布时间】:2011-07-22 10:35:00
【问题描述】:

我有一个通知用户的服务,如果点击通知,活动就会启动。该活动包含文本视图和按钮。布局在 R.layout.main 中定义。如果我想在代码中更改文本视图或按钮的文本,而不是在 xml 中,则应用程序崩溃...

我不知道为什么..这是活动的代码

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    TextView thema = (TextView) findViewById(R.id.thema);
    TextView zeit = (TextView) findViewById(R.id.zeit);
    TextView datum = (TextView) findViewById(R.id.datum);
    TextView ort = (TextView) findViewById(R.id.ort);

    Button change = (Button) findViewById(R.id.changeDetails);
    Button save = (Button) findViewById(R.id.save);
    Button ignore = (Button) findViewById(R.id.ignore);
    Button cancel = (Button) findViewById(R.id.cancel);     

    //The string of the MainService class are not the problem they arent null...

    thema.setText(MainService.thema);
    zeit.setText(MainService.start);
    datum.setText(MainService.end);
    ort.setText(MainService.ort);


    setContentView(R.layout.main);
}

这里是xml

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

    <TableRow android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content">
        <TextView android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:layout_width="wrap_content" android:id="@+id/textView1" android:text="Thema:"></TextView>

    </TableRow>

    <TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content">
        <TextView android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" android:layout_width="wrap_content" android:id="@+id/thema" android:text=""></TextView>
    </TableRow>

    <TableRow android:id="@+id/tableRow3" android:layout_width="wrap_content" android:layout_height="wrap_content">
        <TextView android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:layout_width="wrap_content" android:id="@+id/textView3" android:text="Zeit:"></TextView>
    </TableRow>

    <TableRow android:id="@+id/tableRow4" android:layout_width="wrap_content" android:layout_height="wrap_content">
        <TextView android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" android:layout_width="wrap_content" android:id="@+id/zeit"></TextView>
    </TableRow>

    <TableRow android:id="@+id/tableRow5" android:layout_width="wrap_content" android:layout_height="wrap_content">
        <TextView android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:layout_width="wrap_content" android:id="@+id/textView5" android:text="Datum:"></TextView>
    </TableRow>

    <TableRow android:id="@+id/tableRow6" android:layout_width="wrap_content" android:layout_height="wrap_content">
        <TextView android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" android:layout_width="wrap_content" android:id="@+id/datum"></TextView>
    </TableRow>

    <TableRow android:id="@+id/tableRow7" android:layout_width="wrap_content" android:layout_height="wrap_content">
        <TextView android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:layout_width="wrap_content" android:id="@+id/textView7" android:text="Ort:"></TextView>
    </TableRow>


    <TableRow android:id="@+id/tableRow8" android:layout_width="wrap_content" android:layout_height="wrap_content">
        <TextView android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" android:layout_width="wrap_content" android:id="@+id/ort"></TextView>
    </TableRow>

    <TableRow android:id="@+id/tableRow10" android:layout_width="wrap_content" android:layout_height="wrap_content">
        <Button android:layout_width="fill_parent" android:layout_weight="1" android:layout_height="wrap_content" android:text="Details ändern" android:id="@+id/changeDetails"></Button>
    </TableRow>

                <View android:layout_height="2dip" android:background="#FF909090" />

                <View android:layout_height="5dip" android:background="@android:color/black"/>

    <TableRow android:id="@+id/tableRow9" android:layout_width="wrap_content" android:layout_height="wrap_content" android:baselineAligned="false">
        <Button android:layout_width="100dp" android:layout_height="wrap_content" android:text="Speichern" android:layout_weight="0" android:layout_gravity="center_vertical" android:id="@+id/save"></Button>
        <Button android:layout_width="100dp" android:layout_height="wrap_content" android:text="Ignorieren" android:layout_weight="0" android:layout_gravity="center_vertical" android:id="@+id/ignore"></Button>
        <Button android:layout_width="100dp" android:layout_weight="0" android:layout_height="wrap_content" android:text="Abbrechen" android:layout_gravity="center_vertical" android:id="@+id/cancel"></Button>
    </TableRow>

谢谢

【问题讨论】:

    标签: android button android-layout android-activity textview


    【解决方案1】:

    你应该在膨胀视图之前调用setContentView(R.layout.main);,否则你总是会得到一个异常。

    【讨论】:

      【解决方案2】:

      请写这个

      setContentView(R.layout.main)

      之后的行

      super.onCreate(savedInstanceState) 行及之前

      TextView thema = (TextView) findViewById(R.id.thema);,

      它会解决你的问题。

      【讨论】:

        【解决方案3】:
        setContentView(R.layout.main);            
        TextView thema = (TextView) findViewById(R.id.thema);
        TextView zeit = (TextView) findViewById(R.id.zeit);
        TextView datum = (TextView) findViewById(R.id.datum);
        TextView ort = (TextView) findViewById(R.id.ort);
        
        Button change = (Button) findViewById(R.id.changeDetails);
        Button save = (Button) findViewById(R.id.save);
        Button ignore = (Button) findViewById(R.id.ignore);
        Button cancel = (Button) findViewById(R.id.cancel);     
        thema.setText("this is text");
        

        这很有效,但 MainService 是什么?

        【讨论】:

        • 如果仍有问题,请发送您的 logcat 结果
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-14
        • 2019-01-05
        • 1970-01-01
        • 1970-01-01
        • 2018-10-28
        相关资源
        最近更新 更多