Проблема: у меня возникли проблемы с получением 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 Ошибка (я думаю), вызывающая исключение вызова
Файлообменник
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;
}