2017-01-06 5 views
0

Источник являются: MainActivity.java-Почему приложение падает, если пользователь вводит простой текст, например, "привет"

package com.amostrone.akash.safebrowser; 

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity { 

    public final static String EXTRA_MESSAGE = "com.amostrone.akash.safebrowser.MESSAGE"; 

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

    public void search(View view) { 

     Intent intent = new Intent(this, Browser.class); 
     EditText editText = (EditText) findViewById(R.id.editText); 
     String message = editText.getText().toString(); 

     if(message == null || message.trim().equals("")) { 
      Toast.makeText(this, "No Input", Toast.LENGTH_SHORT).show(); 
      message = "http://www.android.com"; // TODO Add your own WEBSITE 
     } 
     intent.putExtra(EXTRA_MESSAGE, message); 
     startActivity(intent); 
    } 
} 

MainActivity.xml`

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.amostrone.akash.safebrowser.MainActivity"> 

    <EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:inputType="textWebEmailAddress" 
     android:ems="10" 
     android:id="@+id/editText" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:hint="Search here." /> 

    <Button 
     android:text="@string/search" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true" 
     android:id="@+id/button" 
     android:onClick="search" /> 
</RelativeLayout> 

Browser.java

package com.amostrone.akash.safebrowser; 

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class Browser extends AppCompatActivity { 

    static String message; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_browser); 
     Intent intent = getIntent(); 
     message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); 

     if (!((message.substring(0, 11)).equals("http://www.") || (message.substring(0, 12)).equals("https://www."))) 
      check(); 

     WebView myWebView = (WebView) findViewById(R.id.webview); 
     myWebView.setWebViewClient(new WebViewClient()); 
     myWebView.loadUrl(message); 
    } 

    void check() { 
     // WWW 
     if(message.substring(0,4).equals("www.")) 
     { 
      message = "http://" + message; 
      return; 
     } 
     // Google Search 
     message = "https://www.google.co.in/search?q=" + message + "&rct=j" ; 
    } 
} 

Browser.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_browser" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.amostrone.akash.safebrowser.Browser"> 

    <WebView 
     android:id="@+id/webview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentTop="true" /> 
</RelativeLayout> 

Итак, моя проблема заключается в том, что когда я ввожу любой текст, например «http://www.google.con.in» или просто «www.google.co.in», все работает нормально, но когда я ввожу только простой текст, например, приложение «stackoverflow» аварийно завершает работу. еще до того, как система вызовет функцию «поиск» кнопки «поиск (просмотр)». Пожалуйста, помогите -

+0

Помощь с помощью plese Я не очень разбираюсь в развитии android –

+0

где и как он падает? –

+0

Есть ли какое-то исключение? – Blobonat

ответ

2

Проблема может заключаться в том, что вы выполняете подстроку в своем сообщении String, но она слишком короткая. В качестве примера:

message.substring(0, 11) 

Это будет делать подстроку из нулевого индекса до 11, но то, что происходит, если строка имеет длину только 4? Будет исключение. Вы должны извлечь проверки в новый метод и выполнить проверку длины строки перед вызовом метода подстроки.

if(message.length() > 10){ 
    message.substring(0,11); 
} 
+0

* lenght() * - никогда не слышал об этом ;-) –

+0

Но все же он падает перед системным вызовом функции поиска() поиска по кнопке –

+0

Ну, все же, спасибо. –