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>
如果您需要任何其他信息,请告诉我.
任何帮助非常感谢!谢谢.
编辑 – 删除重复按钮,并添加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(...);