2016-05-08 1 views
-1

Ich habe ein Tutorial von diesem link, die im Grunde über Datei-Browse-Konzept in Android ist. Alles funktioniert gut, aber ich bin verwirrt darüber, wie nach dem Lesen dieses Links die Absicht, zwischen Aktivitäten zu wechseln, funktioniert. Die erste Aktivität ist wie folgt,How getIntent.hasExtra Methode funktioniert in android

public class MainActivity extends Activity implements OnClickListener { 

private static final int REQUEST_PICK_FILE = 1; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    filePath = (TextView)findViewById(R.id.file_path); 
    Browse = (Button)findViewById(R.id.browse); 
    Browse.setOnClickListener(this);  
} 

public void onClick(View v) { 

    switch(v.getId()) { 

    case R.id.browse: 
     Intent intent = new Intent(this, FilePicker.class);    
     startActivityForResult(intent, REQUEST_PICK_FILE); 
     break; 
    } 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    if(resultCode == RESULT_OK) { 

     switch(requestCode) { 

     case REQUEST_PICK_FILE: 

      if(data.hasExtra(FilePicker.EXTRA_FILE_PATH)) { 

       selectedFile = new File 
         (data.getStringExtra(FilePicker.EXTRA_FILE_PATH)); 
       filePath.setText(selectedFile.getPath()); 
      } 
      break; 
     } 
    } 

Soweit ich verstanden, seine die Absicht „REQUEST_PICK_FILE“ vorbei und auf das, was er kehrt von „FilePicker.Class“, wird es die Aktion, weil seine StartActivityOnResult auszuführen. Die Verwirrung beginnt mit der nächsten Aktivität. Hier ist die Dateiauswahl-Klasse,

Was passiert hier eigentlich? Was bedeuten die Linien,

if(getIntent().hasExtra(EXTRA_SHOW_HIDDEN_FILES)) 
     ShowHiddenFiles = getIntent().getBooleanExtra(EXTRA_SHOW_HIDDEN_FILES, false); 

eigentlich bedeuten? Wir geben keine Extras wie "EXTRA_SHOW_HIDDEN_FILES" aus früheren Aktivitäten weiter und sogar EXTRA_SHOW_HIDDEN_FILES wurde in dieser Klasse deklariert. Ich verstehe wirklich nicht, was zwischen diesen beiden Aktivitäten passiert. Ich kann nicht fortfahren, bevor ich verstehe, was eigentlich vor sich geht. Jede Hilfe wäre wirklich toll !! Vielen Dank.

Antwort

3

was bedeuten die Linien ... eigentlich?

Es bedeutet, dass, wenn die Intent verwendete FilePicker zu starten, um ein EXTRA_SHOW_HIDDEN_FILES hat, hält auf diesen Wert in dem, was ich davon ausgehen, ist ein boolean Feld auf der Aktivität, die nicht in Ihrer Schwärzungsbereichs Codeliste angezeigt wird.

Wir keine Extras sind vorbei wie "EXTRA_SHOW_HIDDEN_FILES" aus früheren Tätigkeit

konnte Sie, though. Du musst nicht.

sogar EXTRA_SHOW_HIDDEN_FILES wurde in dieser Klasse deklariert

, die ziemlich typisch ist. FilePicker deklariert eine API und legt damit die Namen offen, die für eingehende und ausgehende Extras verwendet werden sollen. EXTRA_SHOW_HIDDEN_FILES ist public, und so kann es von überall referenziert werden, einschließlich MainActivity.

+0

Ich bin immer noch nicht klar mit der Zeile "Es bedeutet, dass, wenn die Intent zum Starten von FilePicker hat eine EXTRA_SHOW_HIDDEN_FILES, halten Sie auf diesen Wert in dem ich ein boolesches Feld für die Aktivität, die nicht in Ihrer redigierten Code-Liste angezeigt wird ". hasExtra wird verwendet, wenn wir prüfen, ob für die Absicht, die von einer vorherigen Aktivität übergeben wurde, Schlüssel angegeben wurden. Was? Wenn wir die Absicht von der vorherigen Aktivität nicht weitergeben, wie Sie sagten, dann warum die Zeilen if (getIntent(). HasExtra (EXTRA_SHOW_HIDDEN_FILES)). @CommonsWare – Anusha

+0

@Anusha: "hasExtra wird verwendet, wenn wir überprüfen, ob die Absicht, die von vorheriger Aktivität übergeben wurde, Schlüssel angegeben hat. Wont es?" -- richtig. "Wenn wir die Absicht von früheren Aktivitäten nicht weitergeben" - sind Sie sicher. Das macht 'startActivityForResult()'. Nun kommt es vor, dass der 'Intent', der von' MainActivity' verwendet wird, um 'FilePicker' zu starten, dieses Extra nicht beinhaltet. 'FilePicker' wurde geschrieben, um leistungsfähiger und flexibler zu sein als' MainActivity' verwendet. Wenn Sie wissen möchten, warum der Autor "FilePicker" mächtiger und flexibler gemacht hat, fragen Sie den Autor. – CommonsWare

+0

Entschuldigung, der Autor reagiert nicht.Also habe ich hier gepostet und jetzt wird die ganze Absicht mit hasextra() in der FilePicker Klasse nicht entstehen, da keine Absichten mit diesen "Schlüsseln" bestanden wurden. Ist mein Verständnis richtig? @CommonsWare – Anusha