Hallo,
ich bin ein Java-Anfänger und programmiere nur aus Spass an der Freude. Ich habe mir ein OpenDialog für Android zusammengeschustert, und nun stehe ich vor folgendem Problem. Ich habe eine globale Variable deklariert und der wird in einer Methode die eine Listener Methode enthält einen Wert in der Listener Methode zugewiesen. Nun enthält die Variable, wenn die Methode sie zurückgeben soll, nicht den zugewiesenen Wert aus der Listener Methode. Kann mir vielleicht jemand erklären, wieso die Variable den Wert nicht behält und wie ich das Problem lösen kann.
Hier mein...
ich bin ein Java-Anfänger und programmiere nur aus Spass an der Freude. Ich habe mir ein OpenDialog für Android zusammengeschustert, und nun stehe ich vor folgendem Problem. Ich habe eine globale Variable deklariert und der wird in einer Methode die eine Listener Methode enthält einen Wert in der Listener Methode zugewiesen. Nun enthält die Variable, wenn die Methode sie zurückgeben soll, nicht den zugewiesenen Wert aus der Listener Methode. Kann mir vielleicht jemand erklären, wieso die Variable den Wert nicht behält und wie ich das Problem lösen kann.
Hier mein...
Java:
class FileDialog {
// Die o.g. Variable
private String fileName;
public String OpenDialog(Context c, String p, String fN, String t, ListView lv) {
context = c;
path = p;
fileName = fN;
text = t;
list = lv;
final Dialog dialog = new Dialog(context, R.style.FullHeightDialog);
dialog.setContentView(R.layout.alert_opendialog);
listView = (ListView) dialog.findViewById(R.id.listView1);
textView = (TextView) dialog.findViewById(R.id.textView2);
editText = (EditText) dialog.findViewById(R.id.editText1);
buttonCancel = (Button) dialog.findViewById(R.id.button1);
buttonAction = (Button) dialog.findViewById(R.id.button2);
update(context, listView, path, false);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Hier wird der Variable der Wert zugewiesen
fileName = listView.getAdapter().getItem(position).toString();
if((fileName.charAt(fileName.length()-1) == '/')||(fileName.equals(".."))) {
path += fileName;
update(context, listView, path, false);
if(fileName.equals("..")) {
path = path.substring(0,path.length()-fileName.length());
path = correctPath(path);
update(context, listView, path, false);
}
textView.setText("/" + getPath(path));
} else {
// Hier enthält die Varable den zugewiesenen Wert
editText.setText(fileName);
}
}
});
listView.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int pos, long id) {
fileName = listView.getAdapter().getItem(pos).toString();
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
alertDialogBuilder.setMessage(getFolderName(path, fileName) +" "+ text);
alertDialogBuilder.setPositiveButton(R.string.button_delete, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
file = new File(path+fileName);
delete(file);
update(context, listView, path, false);
}
});
alertDialogBuilder.setNegativeButton(R.string.button_cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// KEINE AKTION
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
return true;
}
});
buttonCancel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
buttonAction.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(!editText.getText().toString().isEmpty()) {
arrayList = read(path + fileName);
listAdapter = new ArrayAdapter<String>(context, android.R.layout.simple_list_item_1, arrayList);
list.setAdapter(listAdapter);
dialog.dismiss();
}
}
});
editText.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(final TextView v, final int actionId, final KeyEvent event) {
boolean handled=false;
if(EditorInfo.IME_ACTION_DONE==actionId) {
handled=true;
if(!editText.getText().toString().isEmpty()) {
arrayList = read(path + fileName);
listAdapter = new ArrayAdapter<String>(context, android.R.layout.simple_list_item_1, arrayList);
list.setAdapter(listAdapter);
dialog.dismiss();
}
}
return handled;
}
});
dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
dialog.show();
// Hier enthält die Variable nicht mehr den zugewiesenen Wert aus der Listener Methode
return path + fileName;
}
}
Zuletzt bearbeitet: