Как я могу заставить файлообменник заполнять текстовое представление во время создания таблицы?

0

Вопрос

Проблема: у меня возникли проблемы с получением FileChooser класс для заполнения TextView во время TableRow создание. Я получаю Invocation Exception в созданном андроиде "looper.java" что, по-видимому, вызвано переменной tagTrace=0 читается как "!=0". Поэтому я не уверен, как мне удастся это обойти.

Что я пытаюсь сделать: я пытаюсь развить существующий процесс. Когда пользователь нажимает на кнопку "+" в строке заголовка TableLayout, он создает строку с двумя представлениями: "Удалить" (-) Button в строке.ребенок(0) и a TextView в строке.ребенок(1). Он делает это успешно. Есть Singleton класс, который управляет различными типами TableRow творения для всего приложения Actiities.

По одному конкретному Activity существует файл TableLayout. Я хочу, чтобы пользователь, нажав на кнопку"+", которую я описал выше, запустил FileChooser чтобы записать путь к файлу и заполнить этот путь в TextView дочерний элемент строки, которую он создает. Однако я сталкиваюсь с проблемой, описанной выше.

В Looper.java Ошибка (я думаю), вызывающая исключение вызова

Looper Bug

Файлообменник

    public class FileChooser extends AppCompatActivity {
        private String fileName;
        private String filePath;
        private final ActivityResultLauncher<Intent> resultLauncher;
    
        public FileChooser(){
            //if(intent==null) Toast.makeText(null, "Intent is Null", Toast.LENGTH_SHORT).show();
            this.resultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
                if (result.getResultCode() == Activity.RESULT_OK && result.getData() != null){
                    Uri uri = result.getData().getData();
                    filePath = uri.getPath();
                }
            });
        }
    
        public String getFileName() {
            return fileName;
        }
    
        public String getFilePath() {
            return filePath;
        }
    
        public ActivityResultLauncher<Intent> getResultLauncher() {
            return resultLauncher;
        }

}

Метод внутри одного элемента, создающего таблицу, показывает "!жирным шрифтом".

public static TableRow setupFilesTableRow(Context context, TableLayout table, String fileID, String fileName, boolean bold) {
    TableRow row = new TableRow(context);
    if(bold) {
        row.addView(setupFilesAddRowButton(context, table));
        row.addView(addRowTextViewToTable(context, fileName, true));
    }
    if (!bold) {
        row.addView(setupDeleteRowButton(context, table));
        
            // Intent and FileChooser to capture a filePath
            Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
            intent.setType("*/*");
            FileChooser fileChooser = new FileChooser();
            fileChooser.getResultLauncher().launch(intent);

            // Adding a TextView child to the new TableRow with the captured filePath from the FileChooser
            row.addView(addRowTextViewToTable(context, fileChooser.getFilePath(), false));
            //row.setClickable(true);
        
    }
    return row;
}
android filechooser java tablerow
2021-10-21 13:18:53
1
1

Файлообменник файлообменник = новый файлообменник();

Вы не можете создать новое действие с помощью new оператор.

Действия должны быть начаты с использованием намерения.

2021-10-21 13:38:09

Понятно, я об этом, очевидно, не подумал, это имеет смысл.
svstackoverflow

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................