2013-04-07 5 views
0

Im пытается добавить изображение в фоновое действие, чтобы при отсутствии подключения к интернету оно отображало также полноэкранное изображение. У меня есть изображение, но я не могу заставить его появиться. Это мой код.Android - Добавить изображениеПросмотреть на задний план

public class MainActivity extends Activity { 

    private WebView webView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     webView = (WebView) findViewById(R.id.webview); 

     ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     android.net.NetworkInfo wifi = cm 
       .getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
     android.net.NetworkInfo datac = cm 
       .getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
     if ((wifi != null & datac != null) 
       && (wifi.isConnected() | datac.isConnected())) { 
       CookieManager cookieManager = CookieManager.getInstance(); 
       cookieManager.setAcceptCookie(true); 

       webView = (WebView) findViewById(R.id.webview); 
       webView.getSettings().setJavaScriptEnabled(true); 
       webView.setWebChromeClient(new WebChromeClient() { 
         public void onProgressChanged(WebView view, int progress) { 
         MainActivity.this.setProgress(progress * 1000); 
         } 
        }); 
        webView.setWebViewClient(new MyWebViewClient() { 
         public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
         Toast.makeText(MainActivity.this, "An error occurred " + description, Toast.LENGTH_LONG).show(); 
         } 
        }); 

        webView.loadUrl("http://mysite.com/?ma=1"); 
       } 
       else{ 
this ----->  ImageView iv = new ImageView(this); 
        iv.setImageResource(R.drawable.noconnect); 
        iv.setAdjustViewBounds(true); 
        Toast toast = Toast.makeText(MainActivity.this, "No Internet Connection", Toast.LENGTH_LONG); 
        toast.show(); 

     } 

    } 

    private class MyWebViewClient extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      if (Uri.parse(url).getHost().equals("mysite.com")) { 
       return false; 
      } 
      // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs 
      Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
      startActivity(intent); 
      return true; 
     } 
    } 


    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) { 
      webView.goBack(); 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) 
    { 
     switch (item.getItemId()) 
     { 
      case R.id.logout: 
       finish(); 
       return true; 
     } 
     return false; 
    } 


} 

EDIT: здесь есть XML, поэтому он вызывает его при сбое при загрузке.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:id="@+id/pmlayout" > 

    <ImageView 
     android:id="@+id/noconn" 
     android:background="@drawable/noconnect" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:scaleType="matrix" 
     android:visibility="visible" > 
    </ImageView> 

    <WebView android:id="@+id/webview" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"/> 

</LinearLayout> 

Edit 2:

Это крах ошибки IM теперь получаю.

04-07 18:51:17.920: E/AndroidRuntime(8113): FATAL EXCEPTION: main 
04-07 18:51:17.920: E/AndroidRuntime(8113): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.site.testapp/com.site.testapp.MainActivity}: java.lang.ClassCastException: android.widget.ImageView cannot be cast to android.webkit.WebView 
04-07 18:51:17.920: E/AndroidRuntime(8113):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2088) 
04-07 18:51:17.920: E/AndroidRuntime(8113):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2113) 
04-07 18:51:17.920: E/AndroidRuntime(8113):  at android.app.ActivityThread.access$700(ActivityThread.java:139) 
04-07 18:51:17.920: E/AndroidRuntime(8113):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1224) 
04-07 18:51:17.920: E/AndroidRuntime(8113):  at android.os.Handler.dispatchMessage(Handler.java:99) 
04-07 18:51:17.920: E/AndroidRuntime(8113):  at android.os.Looper.loop(Looper.java:137) 
04-07 18:51:17.920: E/AndroidRuntime(8113):  at android.app.ActivityThread.main(ActivityThread.java:4918) 
04-07 18:51:17.920: E/AndroidRuntime(8113):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-07 18:51:17.920: E/AndroidRuntime(8113):  at java.lang.reflect.Method.invoke(Method.java:511) 
04-07 18:51:17.920: E/AndroidRuntime(8113):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004) 
04-07 18:51:17.920: E/AndroidRuntime(8113):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771) 
04-07 18:51:17.920: E/AndroidRuntime(8113):  at dalvik.system.NativeStart.main(Native Method) 
04-07 18:51:17.920: E/AndroidRuntime(8113): Caused by: java.lang.ClassCastException: android.widget.ImageView cannot be cast to android.webkit.WebView 
04-07 18:51:17.920: E/AndroidRuntime(8113):  at me.publicize.testapp.MainActivity.onCreate(MainActivity.java:30) 
04-07 18:51:17.920: E/AndroidRuntime(8113):  at android.app.Activity.performCreate(Activity.java:5048) 
04-07 18:51:17.920: E/AndroidRuntime(8113):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) 
04-07 18:51:17.920: E/AndroidRuntime(8113):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2052) 
04-07 18:51:17.920: E/AndroidRuntime(8113):  ... 11 more 

ответ

0

Для того, чтобы добавить это изображение к своей структуре, сначала нужно указать идентификатор вашего вашего макета. затем найти его с помощью:

findViewByid(id); 

, например:

LinearLayout linearLayout = (LinearLayout) findViewByid (R.id.llayout); 

, а затем добавить ImageView в макет:

linearLayout.addView(iv); 
+0

Еще раз спасибо за помощь. Я пробовал это, но все еще не работал. ImageView iv = новый ImageView (это); iv.setImageResource (R.drawable.noconnect); LinearLayout playout = (LinearLayout) findViewById (R.id.pmlayout); playout.addView (iv); iv.setAdjustViewBounds (true); –

+0

, как я сказал вам в приватном посте, попытайтесь поместить изображение в файл xml и установите его видимость на false, а затем в коде просто измените его видимость, чтобы не справиться с этой проблемой. он должен работать ... вы получаете какой-нибудь массаж ошибок? –

+0

Хорошо, я добавил android: visibility = "invisible" в XML imaageView. В своей работе я использую это ImageView iv = (ImageView) findViewById (R.id.noconn); iv.setVisibility (ImageView.VISIBLE); Это тоже не работает. Почему все так сложно. :/ –