Comment puis-je obtenir un FileChooser pour remplir un TextView au cours d'une TableRow création?

0

La question

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 TableLayoutil 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

Looper Bug

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;
}
android filechooser java tablerow
2021-10-21 13:18:53
1
1

FileChooser fileChooser = new FileChooser();

Vous ne pouvez pas créer une nouvelle activité avec l' new de l'opérateur.

Les activités doivent être démarré à l'aide d'une intention.

2021-10-21 13:38:09

Je vois, je ne pensais pas que, évidemment, qui ont du sens.
svstackoverflow

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................