Verknüpfung eines Ordners erstellen

  • 30 Antworten
  • Letztes Antwortdatum
naja dort wo du halt angibst ;)

ln -s /pfad/zum/original /pfad/zur/verknüpfung

Aber wie rihntrha schon erwähnt hat, würde ich mir nicht zu viel Hoffnung machen.
 
Ohh, das ist hier ja ein Eiertanz - und damit geht es doch nur um das einfache abspeichern von Daten. Oo Damit möchte ich keinem von euch die Kompetenz absprechen, im Gegenteil, das mit den verschiedenen Verzeichnisstrukturen (so nenne ich es mal) war mir bis jetzt auch neu.
Wie gesagt, bei meinem Note 3 (gerootet) mit externer (entnehmbarer) SD funktionierte mein Code. Nutze allerdings auch einen aokp/aosp Rom. Wobei dort die Verzeichnisse auch anders eingehängt sind als unter Stock (oder habe ich mir das irgendwann nur eingebildet?).
Mal ganz abgesehen davon ist mir in letzter Zeit schon öfter aufgefallen dass es je nach Firmware "seltsame" Erscheinungen gibt. So kann ein Freund von mir keine apks zum Testen auf seinem nexus 5 (Stock) installieren - also wenn ich die apk aus meinem Ordner (app/Data) entnehme und diese zur Verfügung stelle - mir ist bewusst dass diese Vorgehensweise auch eher unüblich ist. Trotzdem: Bei anderen Geräten in meinem Freundeskreis war das problemlos möglich - ebenso auf meinen eigenen Testgeräten (S2 und ein Note10.1)..

Meiner Meinung nach schneidet Google die Entwickler in letzter Zeit doch ziemlich ein und macht Probleme wo keine waren gleichzeitig gibt es lt verschiedenen Quellen unsinnige (oder unvollständige) Hinweise hinsichtlich der geänderten Berechtigungen bei Updates. Und die Krone stetzt dann dem Ganzen die Tatsache auf, dass reihenweise Apps im Umlauf sind, bei denen (wohl) regelrecht stupide Bruteforce-Attacken Entwickler- und Nutzerdaten (von verknüpften Konten) raushauen - daran scheint sich Google schon länger nicht zu stören.
 
Also weder bei meinem gerooteten sgs2 (Cyanogenmod 11) noch bei meinem Nexus 5 (Stock Rom, nicht gerootet) wurde die Verknüpfung erstellt.
Liegt das daran, dass beide Handys FAT32 besitzen oder muss ich dem Code der letzten Seite noch etwas hinzufügen?
 
Den Link selber auf einem fat32 System erstellen geht nicht.

cu
 
achso.

Ich habe nun leider ein anderes Problem: Ich wollte, dass während die Medien verschoben werden ein AlertDialog mit "Bitte warten..." angezeigt wird. Leider wird der Dialog gar nicht angezeigt, obwohl ich ihn vor der Methode des Verschiebens ausgeführt wird. Außerdem wird der auch der Dialog "Erfolgreich" nach dem Verschieben nicht angezeigt.

Hier der betroffene Code:

Code der MainActivity, wo die Dialoge erstellt werden (fett-gedruckt)

Code:
package de.domapps.media2sd;

import java.io.File;

import android.app.AlertDialog;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;

public class MainActivity extends ActionBarActivity implements OnClickListener {

	DeleteDirectory deleteObject = new DeleteDirectory();
	Meldungsklasse meldung = new Meldungsklasse(this);
	
	String hauptverzeichnisINSD = Environment.getExternalStorageDirectory().getPath();
	String hauptOrdnerINSD = hauptverzeichnisINSD + "/Media2SD";
	File hauptOrdnerINSDVerzeichnis = new File (hauptOrdnerINSD + "/Verzeichnis");
	File hauptOrdnerINSDSPrache = new File(hauptOrdnerINSD + "/Sprache"); 
	
	
	
	Button btnverschieben;
	CheckBox cbKameraMedien;
	CheckBox cbWABilder;
	CheckBox cbWAVideos;
	CheckBox cbMusik;
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		btnverschieben = (Button) findViewById(R.id.button1);
		btnverschieben.setOnClickListener(this);
	
		
		cbKameraMedien = (CheckBox) findViewById(R.id.checkBox1);
		cbMusik = (CheckBox) findViewById(R.id.checkBox2);
		cbWABilder = (CheckBox) findViewById(R.id.checkBox3);
		cbWAVideos = (CheckBox) findViewById(R.id.checkBox4);
		
		
	
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {

		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		
		if (item.getItemId() == R.id.info) {
			
//			Intent intent = new Intent(this,InfoActivity.class);
//			startActivity(intent);
//			finish();
			
		}
		
		if (item.getItemId() == R.id.sprache) {
			
			deleteObject.del(hauptOrdnerINSDSPrache);
			Intent intent = new Intent(this,SpracheActivity.class);
			startActivity(intent);
			finish();
			
		}
		
		if (item.getItemId() == R.id.verzeichnis) {
			
			deleteObject.del(hauptOrdnerINSDVerzeichnis);
			Intent intent = new Intent(this,VerzeichnisAuswahlActivity.class);
			startActivity(intent);
			finish();
			
		}
		
		if (item.getItemId() == R.id.about) {
			
//			Intent intent = new Intent(this,AboutActivity.class);
//			startActivity(intent);
//			finish();

		
		}
		
		

		return super.onOptionsItemSelected(item);
	}

	@Override
	public void onClick(View v) {
		
		if (v == btnverschieben) {
			
			boolean bool1  = cbKameraMedien.isChecked(); 
			boolean bool2  = cbMusik.isChecked(); 
			boolean bool3  = cbWABilder.isChecked(); 
			boolean bool4  = cbWAVideos.isChecked(); 
			
			if(bool1 == false && bool2 == false && bool3 == false && bool4 == false) {
				meldung.MeldungsAlertDialog("Bitte wählen Sie mindestens ein Medium aus, das auf die externe SD-Karte verschoben werden soll.");
			} else {
			
				

				DatenVerschieben verschieben = new DatenVerschieben(this);
				

				boolean confirm = meldung.ConfirmDialog("Möchten Sie die Medien wirklich verschieben? Dieser Vorgang hängt von der größe der Medien ab und kann bis zu 5 Minuten dauern.");
				
				if (confirm == true) {
				
				[B]	AlertDialog ad = new AlertDialog.Builder(this).create();
					ad.setCancelable(false);
					ad.setMessage("Bitte warten...");
					ad.show();
					[/B]
					if (bool1 == true) {
					verschieben.MedienKamera();
					}
					
					if (bool2 == true) {
					verschieben.musik();
					}
					
					if (bool3 == true) {
					verschieben.BilderWA();
					}
					
					if (bool4 == true) {
					verschieben.VideosWA();
					}
						
			
			ad.cancel();
			[B]meldung.MeldungsAlertDialog("Die Medien wurden erfolgreich verschoben!");[/B]	
			
			
			}else{}
				
				

			
			}
			
		}
		
	}

	

}



Code der Meldungsklasse:
Code:
package de.domapps.media2sd;

import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;

public class Meldungsklasse {

	Context con;
	boolean boolreturn;
	
	
	public Meldungsklasse(Context context) {
		con = context;
	}
	
	
	
public void MeldungsAlertDialog(String message) {
	
	Builder builder = new AlertDialog.Builder(con); 
	builder.setMessage(message);
	builder.setCancelable(true); 
	builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
	public void onClick(DialogInterface dialog, int which) { 
	//Was machen wenn Button gedrückt wurde
	}});
	
	AlertDialog dialog = builder.create();
	dialog.show();  
	
}
	


public boolean ConfirmDialog (String message) {
	
		Builder builder = new AlertDialog.Builder(con); 
		builder.setMessage(message);
		builder.setCancelable(true); 
		builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
		public void onClick(DialogInterface dialog, int which) { 
		boolreturn = true;
		}});
		
		builder.setNegativeButton("Abbrechen", new DialogInterface.OnClickListener() { 
		public void onClick(DialogInterface dialog, int which) {
		boolreturn = false;
		} }); 
		AlertDialog dialog = builder.create();
		dialog.show();  

		return boolreturn;
}	
	
}




Zum Verschieben benutze ich folgende Methode/Klasse:

Code:
package de.domapps.media2sd;

import java.io.File;

public class FunktionVerschieben {

	public void verschieben (File quelle, File ziel, String OrdnerName) {
//		Context  con = context;
		
		
		boolean boolq = quelle.exists();
		boolean boolz = ziel.exists();
		
		if(boolq == true && boolz == true) {
			
			CopyDirectory copy = new CopyDirectory();
			DeleteDirectory delete = new DeleteDirectory();
			
			
			
			File ordner = new File (ziel.getPath() + "/" + OrdnerName);
			ordner.mkdirs();
			
		
			
			boolean boolordner = ordner.exists();
			
			
			
			boolean geklappt = true;
			
			if (boolordner == true) {
			
			try{
			copy.copyDir(quelle, ordner);
			
			}catch (Exception e) {
				geklappt = false;
			}
			
			if (geklappt == true) {
				delete.del(quelle);
			}
			
			
			}else{}
			
			
		}
		
	}
	
	
		
}


Kann mir jemand sagen, was ich falsch gemacht hab / ändern muss?


mfg
 
Hey,
ja ganz so geht das auch nicht, auch wenn deine Vorgehensweise vom Grundgedanken her schon ganz richtig ist.
Wenn ich das gerade richtig beurteile, läuft es bei dir wie folgt ab:
Du lässt den Main-UI-Thread laufen (der läuft bei jeder Activity mit) und steuerst damit deine Anwendung bis zu dem Punkt, wo die Logik mit den Daten folgt. Nun feuerst du die Maschine an (Berechnungen werden vorgenommen, oder Daten geschrieben) und der Main-UI-Thread wird uU gestoppt, da eine andere "Handlung" im Vordergrund ist.

Hier sollte ein Handler für deinen Thread helfen.
Communicating with the UI Thread | Android Developers

Jedenfalls hatte ich vor kurzem ein ähnliches Problem und Markus.Tullius brachte mich dann auf diese Lösung -> hat wunderbar geklappt.
 
ui_3k1 schrieb:
Hey,
ja ganz so geht das auch nicht, auch wenn deine Vorgehensweise vom Grundgedanken her schon ganz richtig ist.
Wenn ich das gerade richtig beurteile, läuft es bei dir wie folgt ab:
Du lässt den Main-UI-Thread laufen (der läuft bei jeder Activity mit) und steuerst damit deine Anwendung bis zu dem Punkt, wo die Logik mit den Daten folgt. Nun feuerst du die Maschine an (Berechnungen werden vorgenommen, oder Daten geschrieben) und der Main-UI-Thread wird uU gestoppt, da eine andere "Handlung" im Vordergrund ist.

Hier sollte ein Handler für deinen Thread helfen.
Communicating with the UI Thread | Android Developers

Jedenfalls hatte ich vor kurzem ein ähnliches Problem und Markus.Tullius brachte mich dann auf diese Lösung -> hat wunderbar geklappt.



Erstmal danke für die Antwort. So ganz habe ich das noch nicht verstanden. Ich hab im Internet auf dieser Seite ein Beispiel dazu gefunden:
Thread With Handlers - Android Example


Nachher habe ich versucht meinen Code entsprechend anzupassen, leider hat es nicht funktioniert:



Code:
package de.domapps.media2sd;

import java.io.File;

import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity implements OnClickListener {

	DeleteDirectory deleteObject = new DeleteDirectory();
	Meldungsklasse meldung = new Meldungsklasse(this);
	
	String hauptverzeichnisINSD = Environment.getExternalStorageDirectory().getPath();
	String hauptOrdnerINSD = hauptverzeichnisINSD + "/Media2SD";
	File hauptOrdnerINSDVerzeichnis = new File (hauptOrdnerINSD + "/Verzeichnis");
	File hauptOrdnerINSDSPrache = new File(hauptOrdnerINSD + "/Sprache"); 
	
	
	
	Button btnverschieben;
	CheckBox cbKameraMedien;
	CheckBox cbWABilder;
	CheckBox cbWAVideos;
	CheckBox cbMusik;
	
	
	Context con;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		btnverschieben = (Button) findViewById(R.id.button1);
		btnverschieben.setOnClickListener(this);
	
		
		cbKameraMedien = (CheckBox) findViewById(R.id.checkBox1);
		cbMusik = (CheckBox) findViewById(R.id.checkBox2);
		cbWABilder = (CheckBox) findViewById(R.id.checkBox3);
		cbWAVideos = (CheckBox) findViewById(R.id.checkBox4);
		
		con = this;
	
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {

		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		
		if (item.getItemId() == R.id.info) {
			
//			Intent intent = new Intent(this,InfoActivity.class);
//			startActivity(intent);
//			finish();
			
		}
		
		if (item.getItemId() == R.id.sprache) {
			
			deleteObject.del(hauptOrdnerINSDSPrache);
			Intent intent = new Intent(this,SpracheActivity.class);
			startActivity(intent);
			finish();
			
		}
		
		if (item.getItemId() == R.id.verzeichnis) {
			
			deleteObject.del(hauptOrdnerINSDVerzeichnis);
			Intent intent = new Intent(this,VerzeichnisAuswahlActivity.class);
			startActivity(intent);
			finish();
			
		}
		
		if (item.getItemId() == R.id.about) {
			
//			Intent intent = new Intent(this,AboutActivity.class);
//			startActivity(intent);
//			finish();

		
		}
		
		

		return super.onOptionsItemSelected(item);
	}

	@Override
	public void onClick(View v) {
		
		if (v == btnverschieben) {
			
			boolean bool1  = cbKameraMedien.isChecked(); 
			boolean bool2  = cbMusik.isChecked(); 
			boolean bool3  = cbWABilder.isChecked(); 
			boolean bool4  = cbWAVideos.isChecked(); 
			
			if(bool1 == false && bool2 == false && bool3 == false && bool4 == false) {
				meldung.MeldungsAlertDialog("Bitte wählen Sie mindestens ein Medium aus, das auf die externe SD-Karte verschoben werden soll.");
			} else {
			
				

//				DatenVerschieben verschieben = new DatenVerschieben(this);
				

				boolean confirm = meldung.ConfirmDialog("Möchten Sie die Medien wirklich verschieben? Dieser Vorgang hängt von der größe der Medien ab und kann bis zu 5 Minuten dauern.");
				
				if (confirm == true) {
				
					AlertDialog ad = new AlertDialog.Builder(this).create();
					ad.setCancelable(false);
					ad.setMessage("Bitte warten...");
					ad.show();
					
//					if (bool1 == true) {
//					verschieben.MedienKamera();
//					}
//					
//					if (bool2 == true) {
//					verschieben.musik();
//					}
//					
//					if (bool3 == true) {
//					verschieben.BilderWA();
//					}
//					
//					if (bool4 == true) {
//					verschieben.VideosWA();
//					}
					
					Verschieben();
						
			
			ad.cancel();
			meldung.MeldungsAlertDialog("Die Medien wurden erfolgreich verschoben!");	
			
			
			}else{}
				
				
//			Intent wartenIntent = new Intent (this, WartenActivity.class);
//			wartenIntent.putExtra("bool1",bool1);
//			wartenIntent.putExtra("bool2",bool2);
//			wartenIntent.putExtra("bool3",bool3);
//			wartenIntent.putExtra("bool4",bool4);
//			startActivity(wartenIntent);
			
			}
			
		}
		
	}
	
	
	private void Verschieben() {
		
		 Thread background = new Thread(new Runnable() {
             
             
              
             // After call for background.start this run method call
             public void run() {
                 try {

                	 
         			boolean bool1  = cbKameraMedien.isChecked(); 
        			boolean bool2  = cbMusik.isChecked(); 
        			boolean bool3  = cbWABilder.isChecked(); 
        			boolean bool4  = cbWAVideos.isChecked(); 
        			
	

        			DatenVerschieben verschieben = new DatenVerschieben(con);
        			
        					
        					if (bool1 == true) {
        					verschieben.MedienKamera();
        					}
        					
        					if (bool2 == true) {
        					verschieben.musik();
        					}
        					
        					if (bool3 == true) {
        					verschieben.BilderWA();
        					}
        					
        					if (bool4 == true) {
        					verschieben.VideosWA();
        					}
        						

                	 
                    

                 } catch (Throwable t) {
                     // just end the background thread
                     Log.i("Animation", "Thread  exception " + t);
                 }
             
                 
               
             
            
             }

              });
         // Start Thread
         background.start();  //After call start method thread called run Method
     };
		
	  



}


Kannst du mir vielleicht sagen, was ich noch ändern muss?


mfg
 
Also ich habe das Problem jetzt durch diesen Link ein wenig verbessern können.
Jedoch startet der ProgressDialog nun schon bevor ich den ConfirmButton bestätigt habe... :confused:


Hier mein neuer Code:


Code:
package de.domapps.media2sd;

import java.io.File;

import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;

public class MainActivity extends ActionBarActivity implements OnClickListener {

	DeleteDirectory deleteObject = new DeleteDirectory();
	Meldungsklasse meldung = new Meldungsklasse(this);
	
	String hauptverzeichnisINSD = Environment.getExternalStorageDirectory().getPath();
	String hauptOrdnerINSD = hauptverzeichnisINSD + "/Media2SD";
	File hauptOrdnerINSDVerzeichnis = new File (hauptOrdnerINSD + "/Verzeichnis");
	File hauptOrdnerINSDSPrache = new File(hauptOrdnerINSD + "/Sprache"); 
	
	
	
	Button btnverschieben;
	CheckBox cbKameraMedien;
	CheckBox cbWABilder;
	CheckBox cbWAVideos;
	CheckBox cbMusik;
	
	
	Context con;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		btnverschieben = (Button) findViewById(R.id.button1);
		btnverschieben.setOnClickListener(this);
	
		
		cbKameraMedien = (CheckBox) findViewById(R.id.checkBox1);
		cbMusik = (CheckBox) findViewById(R.id.checkBox2);
		cbWABilder = (CheckBox) findViewById(R.id.checkBox3);
		cbWAVideos = (CheckBox) findViewById(R.id.checkBox4);
		
		con = this;
	
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {

		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		
		if (item.getItemId() == R.id.info) {
			
//			Intent intent = new Intent(this,InfoActivity.class);
//			startActivity(intent);
//			finish();
			
		}
		
		if (item.getItemId() == R.id.sprache) {
			
			deleteObject.del(hauptOrdnerINSDSPrache);
			Intent intent = new Intent(this,SpracheActivity.class);
			startActivity(intent);
			finish();
			
		}
		
		if (item.getItemId() == R.id.verzeichnis) {
			
			deleteObject.del(hauptOrdnerINSDVerzeichnis);
			Intent intent = new Intent(this,VerzeichnisAuswahlActivity.class);
			startActivity(intent);
			finish();
			
		}
		
		if (item.getItemId() == R.id.about) {
			
//			Intent intent = new Intent(this,AboutActivity.class);
//			startActivity(intent);
//			finish();

		
		}
		
		

		return super.onOptionsItemSelected(item);
	}

	@Override
	public void onClick(View v) {
		
		if (v == btnverschieben) {
			
			boolean bool1  = cbKameraMedien.isChecked(); 
			boolean bool2  = cbMusik.isChecked(); 
			boolean bool3  = cbWABilder.isChecked(); 
			boolean bool4  = cbWAVideos.isChecked(); 
			
			if(bool1 == false && bool2 == false && bool3 == false && bool4 == false) {
				meldung.MeldungsAlertDialog("Bitte wählen Sie mindestens ein Medium aus, das auf die externe SD-Karte verschoben werden soll.");
			} else {
			
				boolean confirm = meldung.ConfirmDialog("Möchten Sie die Medien wirklich verschieben? Dieser Vorgang hängt von der größe der Medien ab und kann bis zu 5 Minuten dauern.");
				
				if (confirm == true) {
				
//					AlertDialog ad = new AlertDialog.Builder(this).create();
//					ad.setCancelable(false);
//					ad.setMessage("Bitte warten...");
//					ad.show();
					
//					if (bool1 == true) {
//					verschieben.MedienKamera();
//					}
//					
//					if (bool2 == true) {
//					verschieben.musik();
//					}
//					
//					if (bool3 == true) {
//					verschieben.BilderWA();
//					}
//					
//					if (bool4 == true) {
//					verschieben.VideosWA();
//					}
					
					
					[B]methodeVerschieben();[/B]
		
//			ad.cancel();
//			meldung.MeldungsAlertDialog("Die Medien wurden erfolgreich verschoben!");	
			
			
			}else{}				
			
			}
			
		}
		
	}
	
	
	
	
	
	public void [B]methodeVerschieben()[/B] {
		
		final ProgressDialog progressDialog = ProgressDialog.show(this, "", "Please wait...");
	      new Thread() {
	          public void run() {
	                try{
	                	DatenVerschieben verschieben = new DatenVerschieben(con);
	                	
	                	boolean bool1  = cbKameraMedien.isChecked(); 
	        			boolean bool2  = cbMusik.isChecked(); 
	        			boolean bool3  = cbWABilder.isChecked(); 
	        			boolean bool4  = cbWAVideos.isChecked(); 
	        			
	        			
	        			if (bool1 == true) {
	    					verschieben.MedienKamera();
	    					}
	    					
	    					if (bool2 == true) {
	    					verschieben.musik();
	    					}
	    					
	    					if (bool3 == true) {
	    					verschieben.BilderWA();
	    					}
	    					
	    					if (bool4 == true) {
	    					verschieben.VideosWA();
	    					}
	        			
	        }catch (Exception e) {
	                    Log.e("tag", e.getMessage());
	                   }
	                // dismiss the progress dialog
	                       progressDialog.dismiss();
	                   }
	                }.start();
		
		
	}
	
	
	


}



Schon mal danke für die Hilfe


mfg
 
Mir ist jetzt noch aufgefallen, dass die App kurz nach dem Verschieben immer abstürzt. Ca. 10 - 20 Sekunden nachdem der ProgressDialog verschwindet, hängt sich die App auf.

Meine Lösung scheint also doch nicht richtig zu sein :(
 
Guten Morgen,

so wie ich die Sache jetzt auf den ersten Blick beurteile hast du zwar die Funktionalitaet in in deiner Klasse drin, rufst sie aber nirgends wo auf, bzw laesst sie uninitialisiert (also "unbestimmt").

Die onCreate eignet sich ganz gut fuer die Anlage eines (Thread)Handler Objekts, schliesslich muss die Activity ja da schon mal durch und somit kannst du dich drauf verlassen, dass das Objekt auch erzeugt wird. Was dann bei Beendigung der Act. passiert (zB wenn jemand anruft, oder der Bildschirm abschaltet), steht wieder auf einem anderen Blatt und muss ggf gesondert betrachtet werden - oder es erfordert deine App nicht - prinzipiell auch moeglich.
Oben ist Thread deswegen in Klammern, da du dir merken kannst, dass viele wichtige Objekte in der onCreate erschaffen werden koennen.

Vielleicht noch ein kleiner Tipp: Auskommentieren kann auch Fehler hervorrufen. Bzw wenn der Code wirklich stimmig ist, dann kann es natuerlich keine Fehler produzieren, aber was ich sagen will ist, dass man mit zu vielen Comments auch schnell mal den Ueberblick darueber verliert, was alles ausgefuehrt wird und was nicht. Kannst auch einfach ein Textfile (Editor, Word whatever) oeffnen, da alles erst mal zwischenspeichern und dann im richtigen Projekt alles raus was nicht gebraucht wird.
Und was manchmal auch das Leben erleichtert, ist auf Variablennamen wie bool1 zu verzichten und lieber etwas Aussagekraeftiges zu nehmen - so wie du es ja weitestgehend gemacht hast, warum nicht in dieser Funktion? :)
 
ui_3k1 schrieb:
Guten Morgen,

so wie ich die Sache jetzt auf den ersten Blick beurteile hast du zwar die Funktionalitaet in in deiner Klasse drin, rufst sie aber nirgends wo auf, bzw laesst sie uninitialisiert (also "unbestimmt").

Die onCreate eignet sich ganz gut fuer die Anlage eines (Thread)Handler Objekts, schliesslich muss die Activity ja da schon mal durch und somit kannst du dich drauf verlassen, dass das Objekt auch erzeugt wird. Was dann bei Beendigung der Act. passiert (zB wenn jemand anruft, oder der Bildschirm abschaltet), steht wieder auf einem anderen Blatt und muss ggf gesondert betrachtet werden - oder es erfordert deine App nicht - prinzipiell auch moeglich.
Oben ist Thread deswegen in Klammern, da du dir merken kannst, dass viele wichtige Objekte in der onCreate erschaffen werden koennen.

Vielleicht noch ein kleiner Tipp: Auskommentieren kann auch Fehler hervorrufen. Bzw wenn der Code wirklich stimmig ist, dann kann es natuerlich keine Fehler produzieren, aber was ich sagen will ist, dass man mit zu vielen Comments auch schnell mal den Ueberblick darueber verliert, was alles ausgefuehrt wird und was nicht. Kannst auch einfach ein Textfile (Editor, Word whatever) oeffnen, da alles erst mal zwischenspeichern und dann im richtigen Projekt alles raus was nicht gebraucht wird.
Und was manchmal auch das Leben erleichtert, ist auf Variablennamen wie bool1 zu verzichten und lieber etwas Aussagekraeftiges zu nehmen - so wie du es ja weitestgehend gemacht hast, warum nicht in dieser Funktion? :)

Eigentlich rufe ich den Thread doch in der methodeVerschieben Methode auf oder habe ich da irgendetwas falsch verstanden?

Sorry für die späte Antwort
mfg
 

Ähnliche Themen

AnnaBauer21
Antworten
6
Aufrufe
939
AnnaBauer21
AnnaBauer21
Jennywise
Antworten
2
Aufrufe
659
Jennywise
Jennywise
Zurück
Oben Unten