Android-приложение в затмении - PullRequest
0 голосов
/ 11 января 2011

Я искал несколько дней, но не могу найти ответ, возможно, вы, ребята, можете помочь.

Я создаю приложение для Android в Eclipse, все это работает, только одна вещь меня беспокоит.

это мой main.java:

    package com.test;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;

public class Main extends Activity implements OnClickListener {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

     // Add Click listeners for all buttons
        View firstButton = findViewById(R.id.btn_rassen);
        firstButton.setOnClickListener(this);
        View secondButton = findViewById(R.id.button2);
        secondButton.setOnClickListener(this);
    }

    // Process the button click events
 @Override
 public void onClick(View v) {
  switch(v.getId()){
   case R.id.btn_rassen:
    Intent j = new Intent(this, Webscreen.class);
       j.putExtra(com.test.Webscreen.URL, 
         "http://www.google.com/");

       startActivity(j);

   break; 

   case R.id.button2:
    Intent k = new Intent(this, Webscreen.class);
       k.putExtra(com.test.Webscreen.URL, 
         "http://notworkingurltotest.com");
       startActivity(k);
   break;

  }  
 }
}

теперь, когда он вызывает webview.java, отображается вызываемая страница, но не кнопки, которые я создал на странице макета XML. Кто-нибудь имеет представление, почему это так?

Ваша помощь очень ценится!

оу, это мой webscreen.java

package com.test;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.Window;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

public class Webscreen extends Activity {

    public static final String URL = "";
    private static final String TAG = "WebscreenClass";
    private WebView webview;
    private ProgressDialog progressDialog;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.webscreen);

        this.getIntent().getExtras(); 
        this.webview = (WebView) findViewById(R.string.webview);


        String turl = getIntent().getStringExtra(URL);
        Log.i(TAG, " URL = "+turl);

    WebView webview = new WebView(this);
    setContentView(webview);


        final Activity activity = this;     

        webview.setWebViewClient(new WebViewClient() {
            public boolean shouldOverrideUrlLoading(WebView view, String url) {              
                view.loadUrl(url);
                return true;
            }


            public void onLoadResource (WebView view, String url) {
                if (progressDialog == null) {
                    progressDialog = new ProgressDialog(activity);
                    progressDialog.setMessage("Bezig met laden...");
                    progressDialog.show();

                }
            }

            public void onPageFinished(WebView view, String url) {
                if (progressDialog.isShowing()) {
                    progressDialog.dismiss();
                    progressDialog = null;


                }
            }


            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {



                Intent myIntent = new Intent();
                myIntent.setClassName("com.test", "com.test.Main");
                startActivity(myIntent); 

                Toast.makeText(activity, "Laden van onderdeel mislukt, probeer het later nog eens! ", Toast.LENGTH_LONG).show();

                progressDialog.show();
            }

            });




        webview.loadUrl(turl);

    }
}

макет webscreen.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical" android:layout_width="fill_parent"
  android:layout_height="fill_parent">

  <!-- <1> -->
  <LinearLayout android:orientation="horizontal"
    android:layout_width="fill_parent" android:layout_height="wrap_content">

    <EditText android:id="@+id/url" android:layout_height="wrap_content"
      android:layout_width="wrap_content" android:lines="1"
      android:layout_weight="1.0" android:hint="http://"
      android:visibility="visible" />

    <Button android:id="@+id/go_button" android:layout_height="wrap_content"
      android:layout_width="wrap_content" android:text="go_button" />

  </LinearLayout>

  <!-- <2> -->
  <WebView
        android:id="@string/webview"
        android:layout_width="fill_parent" 
        android:layout_height="0dip"

        />
</LinearLayout>

1 Ответ

1 голос
/ 11 января 2011

Похоже, вы создаете второе веб-представление, а затем устанавливаете его в качестве представления содержимого, поэтому ваш R.layout.webscreen заменяется.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.webscreen);

    this.getIntent().getExtras(); 
    this.webview = (WebView) findViewById(R.string.webview);

    String turl = getIntent().getStringExtra(URL);
    Log.i(TAG, " URL = "+turl);

    **WebView webview = new WebView(this);
    setContentView(webview);**
.....

Edit:

Я только что заметил что-то в вашем коде, если в строке написано:

this.webview = (WebView) findViewById(R.string.webview);

Точно:

this.webview = (WebView) findViewById(R.**id**.webview);

Редактировать 2: Просто заметил еще одну вещь, пока я делал проект. Следующее в webscreen.xml:

 android:id="@string/webview"

Должно быть:

 android:id="@+id/webview"

Редактировать 3: И еще одна вещь, замеченная в webscreen.xml:

android:layout_height="0dip"

Конечно, вы хотите рост 0? ; -) * 1 021 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...