java - 按钮可能产生空指针异常(Android Studio)

标签 java android button android-studio nullpointerexception

Android Studio 的新手,我认为我做得很好,但昨晚遇到了一个错误,尽管我尽了最大的谷歌搜索努力,但我似乎无法修复。我的一项 Activity 上的按钮“可能会产生 java.lang.NullPointerException”,但每次按下它都会失败。它可能就像在错误的地方订购一行代码一样简单,但我对 Android Studio 很陌生,我真的不知道我哪里出错了。

   public class searchPage extends AppCompatActivity {

    private GoogleApiClient client;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_search_page);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    Button goBackButton = (Button) findViewById(R.id.goBackButton);

    goBackButton.setOnClickListener(new View.OnClickListener() {
        @Override

        public void onClick(View v) {

            startActivity(new Intent(searchPage.this, MainActivity.class));
        }
     });

这是 XML

 <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New Button"
    android:id="@+id/goBackButton"
    android:layout_marginTop="88dp"
    android:layout_below="@+id/spinner4"
    android:layout_centerHorizontal="true"
    />

和 list 文件

 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="com.example.onein.mobilefinalapp">

 <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".searchPage"
        android:label="@string/title_activity_search_page"
        android:theme="@style/AppTheme.NoActionBar" />

    <activity
        android:name=".MoviePage"
        android:label="@string/title_activity_movie_page"
        android:theme="@style/AppTheme.NoActionBar"></activity>

    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
 </application>

 </manifest>

这是 activity_search_page.xml

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay" />

  </android.support.design.widget.AppBarLayout>

 <include layout="@layout/content_search_page" />

 <android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_margin="@dimen/fab_margin"
    android:src="@android:drawable/ic_dialog_email" />

</android.support.design.widget.CoordinatorLayout>

如果您需要任何其他信息,请告诉我。

非常感谢任何帮助!谢谢。

编辑 - 删除重复按钮,并添加到 activity_search_page.xml

最佳答案

Method invocation 'setOnClickListener' may produce 'java.lang.NullPointerException' less...

This inspection analyzes method control and data flow to report possible conditions that are always true or false, expressions whose value is statically proven to be constant, and situations that can lead to nullability contract violations.

这只是一个警告,因为如果在布局中找不到给定的 id,findViewById 将返回 null

如果您确定该 id 在您正在使用的布局中,您可以安全地忽略它,或者您可以通过断言(可能还有一个 @Nullable 注释)忽略它。

View v = findViewById(R.id.someId);
assert v != null;
v.setOnClickListener(...);

关于java - 按钮可能产生空指针异常(Android Studio),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36204297/

相关文章:

java - 是否有原因导致线程仅在我强制调试时才执行?

java - JUnit 没有给出关于 "errors"的信息

java - 我可以将 HashSet 作为 HashMap 中的键吗?如果没有,建议替代方案

按钮中的Android进度条

java - 从装有 Apache Tomcat 8.x 的 Linux 服务器使用 Java Web App 打开 Outlook

android - 使用 OkHttp 进行缓存(无需改造)

java - 由于某种原因,共享偏好不起作用

android - 删除自定义选项菜单项之间的线

java - 按下按钮并转到上一个布局

delphi - 如何创建带有下拉菜单的按钮?