всякий раз, когда я пытаюсь запустить веб-просмотр, хотя кнопка говорит, что приложение остановлено - PullRequest
0 голосов
/ 03 ноября 2019

Я пытаюсь создать приложение, которое реализует веб-просмотр при каждом нажатии кнопки, но. Всякий раз, когда я нажимаю, он, к сожалению, дает мне сообщение вместо того, чтобы идти к нему. Кажется, все правильно, и я поставил его через отладчик, и он выдал мне ошибку " E / AndroidRuntime: FATAL EXCEPTION: main Процесс: com.example.time_app, PID: 7599 java.lang.RuntimeException: Невозможно запуститьActivity ComponentInfo {com.example.time_app / com.example.time_app.Browser}: android.view.InflateException: строка двоичного файла XML # 8: ошибка надувания класса android.webkit.WebView". Это говорит о том, что проблема встрока 42 в файле browser.java, которая является " setContentView (R.layout.activity_browser); ". Я проверил все мои строки кода, и все кажется правильным.

Браузер. java

package com.example.time_app;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;


import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.os.Build;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;


import java.util.Calendar;
import java.util.Date;


public class Browser extends AppCompatActivity {
    //creating the webview variable
    WebView wb;
    //the end variable takes in the finshed load time(it is a long function because of the number length
    long end;
    //this is just a varibale to be used for the alert code
    final Context context = this;
    //this is the total number converted as a string because the alert function does not take in float
    String numberAsString;
    //the start variable takes in the start load time(it is a long function because of the number length
    long start;
    //The total variable takes in the substraction of the end and start and is a float variale do to its shorter length
    float total;

    Date end_Time;
    Date start_Time;



    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_browser);


        wb = (WebView) findViewById(R.id.webview);
        wb.setWebViewClient(new WebViewClient() {
            //this function records the load time
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                start = System.currentTimeMillis();
                start_Time = Calendar.getInstance().getTime();
            }


            //This function will take in the finished load time and create an alert

            @RequiresApi(api = Build.VERSION_CODES.O)
            public void onPageFinished(WebView view, String url) {

                end = System.currentTimeMillis();
                total=end-start;
                end_Time = Calendar.getInstance().getTime();
                // Total is the difference in milliseconds.
                // Dividing by 1000, you convert it to seconds
                numberAsString = String.valueOf(total/1000);
                AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                        context);

                // set title
                alertDialogBuilder.setTitle("Your Load Time");

                // set dialog message
                alertDialogBuilder
                        .setMessage("Elapsed Time:"+numberAsString+"\n"+"Start Time:"+start_Time+"\n"+"EndTime:"+end_Time+"\n")
                        .setCancelable(false)
                        .setNegativeButton("OK", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                                // if this button is clicked, just close
                                // the dialog box and do nothing
                                dialog.cancel();
                            }
                        });

                // create alert dialog
                AlertDialog alertDialog = alertDialogBuilder.create();

                // show it
                alertDialog.show();
            }
        });
        //declaring and setting the web setting variable
        WebSettings webSettings = wb.getSettings();
        //setting up the javascript to allow thw browser to use javascript
        webSettings.setJavaScriptEnabled(true);
        //loading url
        wb.loadUrl("https://www.aa.com");

    }
}

activity_browser.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Browser">

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

</LinearLayout >

Manual_menu.java

package com.example.time_app;

import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;


public class Manual_menu extends AppCompatActivity {

    public  ListView lv;
    public  EditText nametxt;
    public Button addbtn,updatebtn,deletebtn,submit;
    public ArrayList<String> names=new ArrayList<String>();
    public ArrayAdapter<String> adapter;


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

        lv=(ListView) findViewById(R.id.Listview1);
        nametxt=(EditText) findViewById(R.id.nametxt);
        addbtn=(Button) findViewById(R.id.addbtn);
        updatebtn=(Button) findViewById(R.id.updatebtn);
        deletebtn=(Button) findViewById(R.id.deletebtn);
        submit=(Button) findViewById(R.id.Submit_btn);

        //adapter
        adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice,names);
        lv.setAdapter(adapter);




        //Set Selected Item
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                nametxt.setText(names.get(i));

            }
        });

        //add button event
        addbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                add();
            }
        });

        //update button event
        updatebtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                update();
            }
        });

        //delete button event
        deletebtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                delete();
            }
        });


        //clear button event
        submit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                openActivityDecision();
            }
        });








    }


    //add
    private void add()
    {
        String name=nametxt.getText().toString();

        if(!name.isEmpty() && name.length()>0)
        {
            //Add
            adapter.add(name);

            //Refresh
            adapter.notifyDataSetChanged();

            nametxt.setText("");

            Toast.makeText(getApplicationContext(), "Added " +name,Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(getApplicationContext(), "!!Nothing to Add " +name,Toast.LENGTH_SHORT).show();
        }

    }

    //Update
    private void update()
    {
        String name=nametxt.getText().toString();
        int pos=lv.getCheckedItemPosition();

        if(!name.isEmpty() && name.length()>0)
        {
            //Remove Item
            adapter.remove(names.get(pos));

            //insert
            adapter.insert(name,pos);

            //refresh
            adapter.notifyDataSetChanged();

            Toast.makeText(getApplicationContext(), "Updated " +name,Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(getApplicationContext(), "!!Nothing to Update " ,Toast.LENGTH_SHORT).show();
        }
    }

    //delete

    private void delete()
    {
        int pos=lv.getCheckedItemPosition();

        if(pos > -1)
        {
            //remove
            adapter.remove(names.get(pos));

            //refresh
            adapter.notifyDataSetChanged();

            nametxt.setText("");
            Toast.makeText(getApplicationContext(), "Deleted " ,Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(getApplicationContext(), "!!Nothing to delete " ,Toast.LENGTH_SHORT).show();
        }
    }

    //Submit

    private void openActivityDecision()
    {
        Intent intent=new Intent(this, Browser.class);
        startActivity(intent);
    }
}

activity_manual_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    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=".Manual_menu">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="35dp"
        android:text="Name :"
        />
    <EditText
        android:id="@+id/nametxt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/textView1"
        android:ems="10"
        />


    <ListView
        android:id="@+id/Listview1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/addbtn"
        android:choiceMode="singleChoice"
        android:layout_marginTop="20dp">

    </ListView>
    <Button
        android:id="@+id/addbtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/Listview1"
        android:layout_below="@+id/nametxt"
        android:layout_marginTop="19dp"
        android:text="add" />
    <Button
        android:id="@+id/updatebtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/Listview1"
        android:layout_toRightOf="@+id/addbtn"
        android:layout_marginTop="19dp"
        android:text="Update" />
    <Button
        android:id="@+id/Submit_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/Listview1"
        android:layout_alignParentRight="true"
        android:layout_marginTop="19dp"
        android:text="Submit" />
    <Button
        android:id="@+id/deletebtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/Listview1"
        android:layout_toRightOf="@+id/updatebtn"
        android:layout_marginTop="19dp"
        android:text="Delete" />
</RelativeLayout>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.time_app">

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".File_menu"></activity>
        <activity android:name=".Browser" />
        <activity android:name=".file_load" />
        <activity android:name=".Manual_menu" />
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

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