尝试通过图像点击打开webview

时间:2017-06-14 08:59:41

标签: android webview imageview android-sdk-2.3

我试图在点击图片时打开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:添加了所有主要活动代码。

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");
        }
    }