在android应用程序中出现致命异常

Posted

技术标签:

【中文标题】在android应用程序中出现致命异常【英文标题】:getting fatal exception in android app 【发布时间】:2017-07-16 21:20:59 【问题描述】:

我正在创建一个应用程序,我正在尝试获取 edittext 的对象,但它返回 null 并且因此引发了致命异常。

translateActivity.java

package diverse.technologies.transcriber;

public class translateActivity extends AppCompatActivity 

Button go;
TextView tv;
EditText et;
TableLayout tl,tml;
@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);

    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    int width = size.x;
    int height = size.y;

    tl = (TableLayout) findViewById(R.id.tablelayouttexthistory);
    tml = (TableLayout) findViewById(R.id.tablemainlayout);
    et = (EditText) findViewById(R.id.entertext);
    tv = (TextView) findViewById(R.id.textView2);
    go = (Button) findViewById(R.id.button);
    et.clearFocus();
    if(tml.requestFocus())
        Log.d("focus","got on table");
    else
        Log.d("focus","couldn't get");
    showhistory();   //showing history

    //other code

activity_translate.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="diverse.technologies.transcriber.translateActivity">

    <ScrollView
        android:layout_
        android:layout_
        android:fillViewport="true">

        <TableLayout
            android:layout_
            android:layout_
            android:id="@+id/tablemainlayout">

            <TableRow
                android:id="@+id/tableRow1"
                android:layout_
                android:layout_ >

                <EditText
                    android:layout_
                    android:id="@+id/entertext"
                    android:text="Enter Text(English)"
                    android:layout_marginTop="20dp"
                    android:layout_ />

                <Button
                    style="?android:attr/buttonStyleSmall"
                    android:layout_
                    android:layout_
                    android:text="Go"
                    android:id="@+id/button"
                    android:gravity="left|center_vertical"
                    android:layout_marginTop="22dp" />
            </TableRow>

            <TableRow
                android:id="@+id/tableRow2"
                android:layout_
                android:layout_ >

                <TextView
                    android:layout_
                    android:layout_
                    android:text="Translated Text(Gujarati)"
                    android:id="@+id/textView2"
                    android:layout_row="1"
                    android:layout_columnSpan="2"
                    android:layout_marginTop="7dp"
                    android:textSize="25dp"
                    android:layout_span="2" />

            </TableRow>

            <TableRow
                android:id="@+id/tableRow3"
                android:layout_
                android:layout_ >

                <TableLayout
                    android:id="@+id/tablelayouttexthistory"
                    android:layout_
                    android:layout_
                    android:layout_span="2">
                </TableLayout>
            </TableRow>

        </TableLayout>

    </ScrollView>

</RelativeLayout>

我得到的异常:

E/AndroidRuntime: 致命异常: main 进程:various.technologies.transcriber,PID:4447 java.lang.RuntimeException:无法启动活动 ComponentInfodiverse.technologies.transcriber/diverse.technologies.transcriber.translateActivity:java.lang.NullPointerException:尝试调用虚拟方法 'void android.widget.EditText.clearFocus()'在空对象引用上 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2509) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2569) 在 android.app.ActivityThread.access$900(ActivityThread.java:150) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1399) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:168) 在 android.app.ActivityThread.main(ActivityThread.java:5885) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687) 原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.EditText.clearFocus()” 在多样化.technologies.transcriber.translateActivity.onCreate(translateActivity.java:59) 在 android.app.Activity.performCreate(Activity.java:6262) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1125) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2462) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2569) 在 android.app.ActivityThread.access$900(ActivityThread.java:150) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1399) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:168) 在 android.app.ActivityThread.main(ActivityThread.java:5885) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)

请帮忙。我被困在这里了..

【问题讨论】:

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.EditText.clearFocus()” 但是为什么当我用正确的 id 正确获取它时它返回一个空指针?这个方法在其他活动中工作得很好。 @Charuක 【参考方案1】:

您没有设置活动的内容视图并直接找到视图。

使用设置它

setContentView(R.layout.activity_translate);

【讨论】:

【参考方案2】:

您忘记为您的活动添加布局,在您的onCreate() 方法中添加setContentView(R.layout.activity_translate); super.onCreate(savedInstanceState); 行之后

【讨论】:

以上是关于在android应用程序中出现致命异常的主要内容,如果未能解决你的问题,请参考以下文章

android.content.Context.getString 中的 NPE 导致应用程序在启动时崩溃

片段中的Android致命异常

E / AndroidRuntime:致命异常:Android的AsyncTask#1 ERROR

致命异常主要在 Android 上运行应用程序?

获取 Android 运行时:致命异常

致命异常:android.app.RemoteServiceException:无法在 android.os.Handler.dispatchMessage 传送广播