我试图在点击图片时打开WebView。
是否因为我的图片不在MainActivity.xml上?
这是navigationmenheader.xml,其中图像是:
<ImageView
android:id="@+id/signIn"
android:layout_width="match_parent"
android:layout_height="61dp"
android:src="@drawable/signin2"
android:textAlignment="center" />
以下是我的MainActivity.java上的代码部分
public class MainActivity extends AppCompatActivity {
//Drawer variables
private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mToggle;
//Sign in variables
ImageView img;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
img = (ImageView) findViewById(R.id.signIn);
// Drawer
mDrawerLayout=(DrawerLayout) findViewById(R.id.drawerLayout);
mToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.open, R.string.close);
mDrawerLayout.addDrawerListener(mToggle);
mToggle.syncState();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// O button
FloatingActionButton add = (FloatingActionButton) findViewById(R.id.floatingActionButtonADD);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
startActivity(new Intent(MainActivity.this,Pop.class));
}
}
);
signIn();
}
// Drawer 3 lines button
@Override
public boolean onOptionsItemSelected(MenuItem item){
if(mToggle.onOptionsItemSelected(item)){
return true;
}
return super.onOptionsItemSelected(item);
}
// Signin click
public void signIn() {
img.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, WebViewActivity.class);
startActivity(intent);
}
});
}
}
这是WebViewActivity.xml
<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
这是我的WebViewActivity.class
public class WebViewActivity extends Activity{
private WebView webView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.webview);
webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("http://www.google.com");
}
}
Android SDK没有显示错误,但应用程序在启动时崩溃
编辑: 这是logcat所说的。
引起:java.lang.NullPointerException:尝试调用虚方法&#39; void android.widget.ImageView.setOnClickListener(android.view.View $ OnClickListener)&#39;在null对象引用上。
编辑2:添加了所有主要活动代码。
答案 0 :(得分:0)
全局声明ImageView并在onCreate中初始化ImageView并像这样更改signIn方法。
public void signIn() {
img.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, WebViewActivity.class);
startActivity(intent);
}
});
}
答案 1 :(得分:0)
是因为我的图片不在MainActivity.xml中吗? 是,您的图片位于 navigationmenheader.xml 布局中,而在主要活动中,您将布局设置为“setContentView(R.layout。 activity_main ); “但是在 activity_main 布局中,图片视图不存在,这就是为什么它不能顺利运行。 它的工作顺利地使用它 //这是您的主要布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/signIn"
android:layout_width="match_parent"
android:layout_height="61dp"
android:src="@drawable/tv"
android:textAlignment="center" />
</LinearLayout>
//这是你的mymainactivity布局
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
/**
* Created by Mohammad Arman on 6/14/2017.
*/
public class MyMainActivity extends Activity {
ImageView img;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mymainactivity);
img = (ImageView) findViewById(R.id.signIn);
signIn();
}
public void signIn() {
img.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(MyMainActivity.this, WebViewActivity.class);
startActivity(intent);
}
});
}
}
//现在您的webview布局
<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
和您的WebViewActivity
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
/**
* Created by Mohammad Arman on 6/14/2017.
*/
public class WebViewActivity extends Activity {
private WebView webView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.webview);
webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("http://www.google.com");
}
}