как вызвать вывод метода в текстовом представлении другой деятельности? - PullRequest
0 голосов
/ 05 марта 2020

Я программирую приложение для сортировки чисел и отображения процесса сортировки после сортировки входных данных. Будет показана новая кнопка для отображения шагов сортировки выбора в новом действии

[Упражнение SelectionSort 1

Я хочу, чтобы выходные данные функции SelectionSortMethod в SelectionSort классе отображались в новом действии activity_Ssteps

SelectionSort.java:

public class SelectionSort extends AppCompatActivity {

    EditText input;
    EditText output;
    Button Ssteps ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_selection_sort);
        input=findViewById(R.id.input);
        output=findViewById(R.id.output);
         Ssteps = findViewById(R.id.steps);

        Ssteps.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {

                Intent s = new Intent(SelectionSort.this, com.example.sorted.Ssteps.class);

                startActivityForResult(s, 1);
            }
        });}

    public void sortButtonPressed(View view){
            String[] numberList = input.getText().toString().split(","); 

            Integer[] numbers = new Integer[numberList.length];
            for (int i = 0; i < numberList.length; i++) {

                numbers[i] = Integer.parseInt(numberList[i]);
            }

            SelectionSortmethod(numbers); 
            output.setText(Arrays.toString(numbers));

// if button "sort " is pressed , the button "view steps "will be displayed
            Ssteps.setVisibility(View.VISIBLE);
        }
    }

    public static void SelectionSortmethod (Integer[]  arr)
    {
        // some code for sorting and showing the steps
}

Ssteps.java:

public class Ssteps extends AppCompatActivity {
    TextView steps_text ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ssteps);
        setTitle("selection sort steps ");
        steps_text =findViewById(R.id.Stepstextview);
    }
}

Ответы [ 2 ]

1 голос
/ 06 марта 2020

Вы можете просто использовать intent.extras следующим образом:

   Intent s = new Intent(SelectionSort.this, com.example.sorted.Ssteps.class);
   s.putExtra("AnyID",YOURDATA);
   startActivity(s);

А затем в вашем Ssteps.class вы можете получить данные, используя идентификатор, подобный этому:

String ss = getIntent.getExtra("AnyID"); //the id is the same as the other one above
steps_text.settext(ss);
0 голосов
/ 06 марта 2020

Работа с Intents, как описано Youssof, - это путь к go для небольших приложений, подобных вашему. Однако по мере того, как вы прогрессируете в Android программировании, вам определенно следует взглянуть на разделение вашего приложения на Fragments, а не Activities. Они могут использовать Viewmodel, что значительно упрощает обмен большим количеством данных между экранами. Также Fragments можно использовать в компоненте androidx Navigation, чье изменение Fragments может быть красиво организовано в пользовательском интерфейсе. Очень удобно для обзоров продуктов.

...