У меня есть 2 действия, на втором я читаю и делаю некоторые изменения в локальном файле JSON, и он работает для всего, что мне нужно, но когда я перехожу к mainActivity и затем возвращаюсь ко второму, кажется, что файл просто сбрасывается и Похоже, я не применял никаких изменений. Я не знаю что делать ...

Я надеюсь, что здесь есть чем заняться ...

Вот код для второго упражнения:

package com.example.plasticopedia;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

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

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;

public class calculator extends AppCompatActivity {

    int buttonClicked = MainActivity.buttonClicked;
    Button plus;
    Button minus;

    public int amountTrash;

    /public boolean openingActivity = true;
    public boolean clickedPlus = true;/

    public int clickedPlus;

    String firstParagraph;
    String secondParagraph;
    String thirdParagraph;
    String fourthParagraph;
    String fifthParagraph;

    String[] nameArray = {"BAG", "BOTTLE", "STRAW", "DETERGENT_CONTAINER", "BOTTLE_CAP", "FOOD_CONTAINER", "CUTLERY", "CRISPS_PACKET"};
    String[] titleArray = {"Plastic Bag", "Water Bottle", "Straw", "Detergent Container", "Bottle Cap", "Food Container", "Cutlery", "Crisps Packet"};


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

        getJSON();
        changeImageTitleText();

        plus = findViewById(R.id.plus);
        minus = findViewById(R.id.minus);

        plus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                clickedPlus = 1;
                getJSON();
                clickedPlus = 0;
            }
        });

        minus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                clickedPlus = 2;
                getJSON();
                clickedPlus = 0;
            }
        });
    }
public void changeImageTitleText(){
        TextView title = findViewById(R.id.title);
        TextView P1 = findViewById(R.id.firstParagraph);
        TextView P2 = findViewById(R.id.secondParagraph);
        TextView P3 = findViewById(R.id.thirdParagraph);
        TextView P4 = findViewById(R.id.fourthParagraph);
        TextView P5 = findViewById(R.id.fifthParagraph);

        for(int i = 0; i < titleArray.length; i++){
            if(buttonClicked == i){
                title.setText(titleArray[i]);
                P1.setText(firstParagraph);
                P2.setText(secondParagraph);
                P3.setText(thirdParagraph);
                P4.setText(fourthParagraph);
                P5.setText(fifthParagraph);
                changeImage(i);
            }
        }
    }


    private void changeImage(int i){
        Button image = findViewById(R.id.image);
        if(i == 0){
            image.setBackgroundResource(R.drawable.button_plastic_bag);
        } else if (i == 1){
            image.setBackgroundResource(R.drawable.button_plastic_bottle);
        } else if (i == 2){
            image.setBackgroundResource(R.drawable.button_plastic_straw);
        } else if (i == 3){
            image.setBackgroundResource(R.drawable.button_plastic_detergent_container);
        } else if (i == 4){
            image.setBackgroundResource(R.drawable.button_plastic_bottle_cap);
        } else if (i == 5){
            image.setBackgroundResource(R.drawable.button_plastic_food_container);
        } else if (i == 6){
            image.setBackgroundResource(R.drawable.button_plastic_cutlery);
        } else if (i == 7){
            image.setBackgroundResource(R.drawable.button_plastic_crisps_packet);
        }
    }
public void getJSON(){
        String json;
        try{
            InputStream is = getAssets().open("plastic.json");
            int size = is.available();
            byte[] buffer = new byte[size];
            is.read(buffer);
            is.close();

            json = new String(buffer, "UTF-8");
            JSONArray jsonArray = new JSONArray(json);

            if(clickedPlus == 0) {
                for (int i = 0; i < jsonArray.length(); i++) {
                    JSONObject obj = jsonArray.getJSONObject(i);
                    for (int j = 0; j < nameArray.length; j++) {
                        if (buttonClicked == j) {
                            if (obj.getString("name").equals(nameArray[j])) {
                                Log.e("TrashOpening", "" + amountTrash);
                                //((JSONObject)jsonArray.get(i)).put("amountTrash", "20");
                                TextView tv = findViewById(R.id.number);
                                tv.setText(obj.getString("amountTrash"));
                                Log.e("TrashOpeningSecond", "" + amountTrash);
                                firstParagraph = obj.getString("1");
                                secondParagraph = obj.getString("2");
                                thirdParagraph = obj.getString("3");
                                fourthParagraph = obj.getString("4");
                                fifthParagraph = obj.getString("5");
                            }
                        }
                    }
                }
            }
if(clickedPlus == 1){
                //changing the values
                for(int i = 0; i < jsonArray.length(); i++){
                    JSONObject obj = jsonArray.getJSONObject(i);
                    for(int j = 0; j < nameArray.length; j++){
                        if(buttonClicked == j){
                            if(obj.getString("name").equals(nameArray[j])){
                                amountTrash ++;
                                Log.e("TrashClickedPlus", "" + amountTrash);
                                ((JSONObject)jsonArray.get(i)).put("amountTrash", "" + amountTrash);
                                TextView tv = findViewById(R.id.number);
                                tv.setText(obj.getString("amountTrash"));
                                Log.e("TrashAfterChangingJSON", "" + Integer.parseInt(obj.getString("amountTrash")));
                            }
                        }
                    }
                }
            }else if(clickedPlus == 2){
                for(int i = 0; i < jsonArray.length(); i++){
                    JSONObject obj = jsonArray.getJSONObject(i);
                    for(int j = 0; j < nameArray.length; j++){
                        if(buttonClicked == j){
                            if(obj.getString("name").equals(nameArray[j])){
                                if(amountTrash > 0){
                                    amountTrash --;
                                    ((JSONObject)jsonArray.get(i)).put("amountTrash", "" + amountTrash);
                                    TextView tv = findViewById(R.id.number);
                                    tv.setText(obj.getString("amountTrash"));
                                }
                            }
                        }
                    }
                }
            }
        }catch(IOException e){
            e.printStackTrace();
        }catch(JSONException e){
            e.printStackTrace();
        }
    }

}
0
José Gil 21 Дек 2019 в 04:31

1 ответ

Активы доступны только для чтения или для использования общих настроек или локальной базы данных.

0
Rendón 21 Дек 2019 в 03:15