Android Studio的新手,我认为我做得很好,但昨晚遇到了一个错误,尽管谷歌搜索力度最大,但我似乎无法修复.我的一个活动上的一个按钮’可能会产生java.lang.NullPointerException’,除了它每次推送都会失败.它可能就像在错误的地方订购一行代码一样简单,但我对Android工作室这么新,我真的不知道我哪里出错了.
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" />
和清单文件
<?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>
如果您需要任何其他信息,请告诉我.
任何帮助非常感谢!谢谢.
解决方法
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(...);