2017-06-14 9 views
0

Ich versuche, ein WebView zu öffnen, wenn auf ein Bild geklickt wird.Versuchen, ein Webview durch ein Bild zu öffnen, klicken Sie

Ist es becase mein Bild ist nicht auf der MainActivity.xml? Hier

ist die navigationmenheader.xml, wo das Bild ist:

<ImageView 
    android:id="@+id/signIn" 
    android:layout_width="match_parent" 
    android:layout_height="61dp" 
    android:src="@drawable/signin2" 
    android:textAlignment="center" /> 

Hier ist der Teil des Codes auf meinem 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); 
     } 
    }); 
} 

}

Hier ist die 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" /> 

Und hier ist mein 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 zeigt keine Fehler, aber die App stürzt beim Start

Edit: Hier ist, was die logcat sagt.

verursacht durch: java.lang.NullPointerException: Versuch, die virtuelle Methode 'void android.widget.ImageView.setOnClickListener (android.view.View $ OnClickListener)' auf einen Null-Objektverweis aufzurufen.

Edit 2: Hinzugefügt alle Mainactivity-Code.

+1

siehe logcat für die Ausnahme, Stacktrace und einen Grund des Absturzes. –

+0

Mögliches Duplikat von [Leider ist MyApp gestoppt. Wie kann ich das lösen?] (Https://stackoverflow.com/questions/23353173/unidymy-myapp-has-stopped-how-cani-i-solve-this) –

+0

können Sie Ihre logcat veröffentlichen. –

Antwort

0

Ist es, weil mein Bild nicht in der MainActivity.xml ist? Ja, Ihr Bild in navigationmenheader.xml Layout ist und in Main Activity Sie Layout setzen "setContentView (R.layout activity_main.)," Aber in activity_main Layout ist Ansicht Bild nicht da deshalb läuft es nicht reibungslos. Seine Arbeiten verwenden Reibungslos diese // Hier ist Ihr Haupt Layout-

<?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> 

// und hier ist Ihre mymainactivity Layout-

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

// Jetzt Ihr webview Layout

<?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" 
    /> 

und Ihre 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 aufzurufen, ändern Sie Ihren Bildnamen im Hauptlayout als android: src = "@ drawable/tv" zu deinem Bild android: src = "@ drawable/signin2" –

+0

@wangalang Hast du dein Problem gelöst? –

+0

Entschuldigung, ich hatte keine Zeit es zu versuchen, ich werde es später versuchen. – Wangalang

0

ImageView global deklarieren und in onCreate ImageView initialisieren und die signIn-Methode wie folgt ändern.

public void signIn() { 
img.setOnClickListener(new View.OnClickListener() { 
public void onClick(View v) { 
    Intent intent = new Intent(MainActivity.this, WebViewActivity.class); 
    startActivity(intent); 
} 
}); 

}

+0

Stürzt ab, aber gibt mir diesen Fehler : java.lang.NullPointerException: Versuch, die virtuelle Methode 'android.view.Window $ Callback android.view.Window.getCallBack()' auf einem Null-Objekt Referenz – Wangalang

Verwandte Themen