Как я могу вызвать веб-браузер с предоставленным пользователем URL? - PullRequest
0 голосов
/ 21 декабря 2009

Я довольно новичок в программировании и просто чтобы попробовать Андорид. Я пытаюсь создать простое приложение, которое запрашивает у пользователя строку, после чего я хочу, чтобы моя программа выходила в Интернет через веб-браузер.

Но я ошибаюсь в двух вещах, одна вещь - мой путь в Интернет, но я знаю, что выбрал неправильный метод, но другая вещь - findViewById (R.id.) Не работает не могу понять, почему ..

Мой код (от http://pastebay.com/77559):

package team.ice.kth;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.EditText;

public class KTH extends Activity {
    private Button mButton;
    private EditText mClassInfo;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mClassInfo = (EditText) findViewById(R.id.ClassInfo);

        final Button mButton = (Button) this.findViewById(R.id.OK_Button);
        mButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                onGoTo();
            }
            private void onGoTo() {
                createUrl();
            }
            protected void createUrl() {
                String Class = mClassInfo.getText().toString();

                WebView webview = new WebView(this);
                setContentView(webview);
                webview.loadUrl("http://schema.sys.kth.se/4DACTION/WebShowSearch/2/1-0?wv_type=5&wv_category=0&wv_ts=20091220T015342X7921&wv_search=" + Class + "&wv_startWeek=935&wv_stopWeek=951&wv_first=0&wv_addObj=&wv_delObj=&wv_obj1=19498000&wv_graphic=Grafiskt+format");
            }
        });
    }
} 

и мой XML (от http://pastebay.com/77560):

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/widget0"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <EditText
        android:id="@+id/class"
        android:layout_width="96px"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:layout_x="120px"
        android:layout_y="43px" />
    <TextView
        android:id="@+id/ClassInfo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Class:"
        android:layout_x="62px"
        android:layout_y="58px" />
    <Button
        android:id="@+id/OK_Button"
        android:layout_width="47px"
        android:layout_height="39px"
        android:text="Sök"
        android:layout_x="237px"
        android:layout_y="52px" />
</AbsoluteLayout> 

Буду признателен, поэтому я не могу выбросить этого призрака из головы, мои знания не могут продвинуть меня дальше.

Ответы [ 4 ]

1 голос
/ 21 декабря 2009

Проблема с findViewById(). Вы пытаетесь прочитать неверные данные View.Согласно XML ваш EditText будет называться R.id.class, а не R.id.ClassInfo (который является вашим TextView).Вам нужно изменить ваш код на что-то вроде:

public class KTH extends Activity {
    private Button   mButton;
    private EditText mClass;      // this will be a handle to the editable text area
    private TextView mClassInfo;  // this will be a handle to the static text area which reads "Class:"

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mClassInfo = (TextView) findViewById(R.id.ClassInfo);  // 'ClassInfo' is a TextView in the XML
        mClass     = (EditText) findViewById(R.id.class    );  // 'class' is an EditText in the XML
        mButton    = (Button  ) findViewById(R.id.OK_Button);

        mButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                onGoTo();
            }
            private void onGoTo() {
                createUrl();
            }
            protected void createUrl() {
                String Class = mClass.getText().toString();

                WebView webview = new WebView(this);
                setContentView(webview);
                webview.loadUrl("http://schema.sys.kth.se/4DACTION/WebShowSearch/2/1-0?wv_type=5&wv_category=0&wv_ts=20091220T015342X7921&wv_search=" + Class + "&wv_startWeek=935&wv_stopWeek=951&wv_first=0&wv_addObj=&wv_delObj=&wv_obj1=19498000&wv_graphic=Grafiskt+format");
            }
        });
    }
} 

Как заметил Дэвид выше, вы действительно должны найти что-то еще (что-нибудь еще), чтобы назвать это EditText другим, чем "класс",Похоже, что вы, вероятно, уже.

Что касается загрузки сайта, не могли бы вы рассказать нам, как он работает?Что не так?

0 голосов
/ 26 декабря 2014

Для вашего р.ид. проблема у вас, перейдите по ссылкам ниже:

Это может быть полезно для вас.

Здесь или здесь

0 голосов
/ 21 декабря 2009

Ваша проблема с кнопкой (в комментариях, а не в основном вопросе выше), возможно, связана с тем, как вы объявляете кнопку дважды. Используя числа из PasteBay, вы сначала декальцируете кнопку в строке 12, а затем снова в 26 при запуске findViewById. Попробуйте избавиться от первого. Если это не поможет, более подробная информация о проблеме может позволить людям, более опытным, чем я (я тоже новичок: p) найти проблему.

0 голосов
/ 21 декабря 2009

Что касается направления пользователя в интернет, что вам здесь нужно? Веб-просмотр хорош для показа части веб-контента в приложении, но если вы просто хотите открыть браузер по умолчанию из своего приложения и указать ему URL-адрес, вы можете просто использовать это:

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com/"))); 

Что касается findViewById, они выглядят примерно так: какое сообщение об ошибке вы получаете, или, если его нет, что с ним не работает?

Если идентификатор, который вы ищете, не существует в R.id, возможно, в вашем main.xml может быть какая-то ошибка (на самом деле, я думаю, что ошибки в других местах могут помешать правильной генерации R, поэтому Вы можете проверить затмение на наличие ошибок компилятора.

Пожалуйста, опишите проблему findViewById более подробно, и вы также можете показать нам свой код XML макета.

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