2017-06-14 121 views
0

我试图在点击图像时打开WebView。试图通过图像打开web视图点击

是否因为我的图像不在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:尝试在空对象引用上调用虚拟方法'void android.widget.ImageView.setOnClickListener(android.view.View $ OnClickListener)'。

编辑2:添加了所有主要活动代码。

+1

查看logcat的异常,堆栈跟踪和崩溃的原因。 –

+0

[可惜MyApp已停止。我怎样才能解决这个问题?](https://stackoverflow.com/questions/23353173/uncomfort-myapp-has-stopped-how-can-i-solve-this) –

+0

你可以发布你的logcat。 –

回答

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

//现在的网页视图布局

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

@Wangalang将主图像中的图像名称更改为android:src = “@ drawable/tv”给你的图片android:src =“@ drawable/signin2” –

+0

@wangalang你解决了你的问题吗? –

+0

对不起,我没有时间尝试它,今天晚些时候尝试它。 – Wangalang

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

}

+0

也崩溃,但给我这个错误。 :java.lang.NullPointerException:尝试调用空对象引用的虚拟方法'android.view.Window $回调android.view.Window.getCallBack()' – Wangalang