Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 打开特定活动时令人沮丧的崩溃_Java_Android_Android Studio_Logcat - Fatal编程技术网

Java 打开特定活动时令人沮丧的崩溃

Java 打开特定活动时令人沮丧的崩溃,java,android,android-studio,logcat,Java,Android,Android Studio,Logcat,在我的android项目中运行特定活动时,模拟器会不断崩溃。该项目的主要活动以及启动屏幕运行良好。我尝试运行的活动非常复杂,从phpMyAdmin数据库读取信息 我已经通读了日志,但似乎无法确定导致崩溃的错误。任何方向正确的点头都将不胜感激。对这类东西没有太多的经验 非常感谢,并为混乱的日志表示歉意 维护活动 package com.example.bs.myapplication; import android.support.v7.app.AppCompatActivity; impo

在我的android项目中运行特定活动时,模拟器会不断崩溃。该项目的主要活动以及启动屏幕运行良好。我尝试运行的活动非常复杂,从phpMyAdmin数据库读取信息

我已经通读了日志,但似乎无法确定导致崩溃的错误。任何方向正确的点头都将不胜感激。对这类东西没有太多的经验

非常感谢,并为混乱的日志表示歉意

维护活动

  package com.example.bs.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.Toast;

import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

public class Maintenance extends AppCompatActivity {

    private static final String PRODUCT_URL = "http://192.XXXXXXX/MyApi/api.php";

    RecyclerView recyclerView;
    ProductAdapter adapter;

    List<Product> productList;

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

        productList = new ArrayList<>();

        recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));

        loadProducts ();

    }

    private void loadProducts () {

        StringRequest stringRequest = new StringRequest(Request.Method.GET, PRODUCT_URL,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try {
                            JSONArray products  =new JSONArray(response);

                            for (int i = 0; i<products.length(); i++){

                                JSONObject productObject = products.getJSONObject(i);

                                int maintenance_id = productObject.getInt("maintenance_id");
                                String type = productObject.getString("type");
                                String property = productObject.getString("property");
                                String more_info = productObject.getString("more_info");
                                Double date = productObject.getDouble("date");

                                Product product = new Product(maintenance_id, type, property, more_info, date);
                                productList.add(product);

                            }

                            adapter = new ProductAdapter(Maintenance.this, productList);
                            recyclerView.setAdapter(adapter);

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }
                },

                new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

                Toast.makeText(Maintenance.this, error.getMessage(), Toast.LENGTH_SHORT).show();

                    }
                });

        Volley.newRequestQueue(this).add(stringRequest);

    }
}
package com.example.bs.myapplication;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.support.v7.widget.LinearLayoutManager;
导入android.support.v7.widget.RecyclerView;
导入android.widget.Toast;
导入com.android.volley.Request;
导入com.android.volley.Response;
导入com.android.volley.VolleyError;
导入com.android.volley.toolbox.StringRequest;
导入com.android.volley.toolbox.volley;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入java.util.ArrayList;
导入java.util.List;
公共类维护扩展了AppCompative活动{
私有静态最终字符串产品\u URL=”http://192.XXXXXXX/MyApi/api.php";
回收视图回收视图;
产品适配器;
列出产品清单;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maintenance);
productList=新的ArrayList();
recyclerView=(recyclerView)findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(新的LinearLayoutManager(本));
装载产品();
}
私有void loadProducts(){
StringRequest StringRequest=新的StringRequest(Request.Method.GET、PRODUCT\u URL、,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
试一试{
JSONArray产品=新的JSONArray(响应);

对于(inti=0;i您应该迁移到26.0.0或更高版本以支持v7库

这是appcompat库中的问题,这里提到了

    <?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"
    tools:context="com.example.benchalmers.myapplication.Maintenance">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</RelativeLayout>

ResourcesCompat.getFont()引发异常

您应该在所有与Android相关的依赖项中使用相同的版本,这是一个最佳实践

您可以使用

./gradlew :app:dependencyInsight --dependency com.android.support:appcompat --configuration debugCompileClasspath

它将为您提供appcompat版本从26.1.0升级到27.0.2的信息
activity\u mainteance
现在添加了适配器类。添加了@SantanuSurI面临类似问题(可能相同)这是CompatLib上的一个错误,因为它要求您使用常规调用,而常规调用要求使用CompatLib。请尝试更新AppCompat版本(在我的情况下,我降级为23.0.1)这只是在build.gradle中更改它的一个例子吗?我不确定正确执行此操作的步骤。它说所有Android库必须基于相同的版本规范,并说我在27.0.2上有一个。我可以看到的都是26.1.0。有没有办法可以看到所有Android库及其版本?编辑了我的答案
    package com.example.benchalmers.myapplication;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.List;

public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.ProductViewHolder> {


    private Context mCtx;
    private List<Product> productList;

    public ProductAdapter(Context mCtx, List<Product> productList) {
        this.mCtx = mCtx;
        this.productList = productList;
    }

    @Override
    public ProductViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        LayoutInflater inflater = LayoutInflater.from(mCtx);
        View view = inflater.inflate(R.layout.list_layout, null);
        return new ProductViewHolder(view);

    }

    @Override
    public void onBindViewHolder(ProductViewHolder holder, int position) {

        Product product = productList.get(position);

        holder.textViewType.setText(product.getType());
        holder.textViewProperty.setText(product.getProperty());
        holder.textViewMoreInfo.setText(String.valueOf(product.getMoreInfo()));
        holder.textViewDate.setText(String.valueOf(product.getDate()));

        //holder.imageView.setImageDrawable(mCtx.getResources().getDrawable(product.getImage()));
    }

    @Override
    public int getItemCount() {
        return productList.size();
    }

    class ProductViewHolder extends RecyclerView.ViewHolder {

        ImageView imageView;
        TextView textViewType, textViewProperty, textViewMoreInfo, textViewDate;

        public ProductViewHolder(View itemView) {
            super(itemView);

            imageView = itemView.findViewById(R.id.imageView);
            textViewType = itemView.findViewById(R.id.textViewType);
            textViewProperty = itemView.findViewById(R.id.textViewProperty);
            textViewMoreInfo = itemView.findViewById(R.id.textViewMoreInfo);
            textViewDate = itemView.findViewById(R.id.textViewDate);

        }
    }
}
./gradlew :app:dependencyInsight --dependency com.android.support:appcompat --configuration debugCompileClasspath