Problème: je vais avoir du mal à obtenir un FileChooser
classe pour remplir un TextView
au cours d'une TableRow
la création. Je la réception d'un Invocation Exception
dans l'Android créé "looper.java" ce qui semble être causée par une variable tagTrace=0
en cours de lecture comme "!=0". Donc, je ne suis pas sûr de savoir comment je peut être en mesure de le contourner.
Ce que je suis en train de faire: je suis en train de construire sur un processus existant. Lorsqu'un utilisateur clique sur un bouton "+" sur la ligne d'en-tête d'un TableLayout
il crée une ligne avec deux points de vue: l'un, "Supprimer" (-) Button
dans la rangée.enfant(0) et un TextView
dans la rangée.enfant(1). Il le fait avec succès. Il y a un Singleton
la classe qui gère les différents types de TableRow
des créations pour tous les app Actiities
.
Un en particulier Activity
il existe un Fichiers TableLayout
. Je veux que l'utilisateur, en cliquant sur les "+" buttion que j'ai décrit ci-dessus, pour le lancement d'un FileChooser
pour capturer un chemin d'accès au fichier et de renseigner le chemin de la TextView
enfant de la ligne, il est en train de créer. Cependant, je suis en cours d'exécution dans la question ci-dessus.
L'Looper.java Bug (je pense) provoquant l'invocation de l'exception
Le FileChooser
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;
}
}
La Méthode au sein de l'Singleton de la création de la TableRow Le "!bold"
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;
}