2017-06-14 35 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