Beiträge von nono124

    Hi,

    Wenn ich mein Problem richtig verstehe muss über eine Activity ausserhalb des FrameLayout auf ein Fragment zugreifen.

    ein Fragment läuft nie alleine es läuft immer in einer Activity. Meist die MainAcktivity in der auch der Navdrawer läuft. Die Activity wird also nicht beendet. Clickevents kommen in der Activity an und müssen an die FragmentKlasse weitergereicht werden. deshalb importiern des Listner und getActivity für den bezug zu übergeordnenden Activity.


    Nur wieso willst du eine andere Activity starten? Dies würdest du mit einen Intent machen und da würde deine Mainactivity beendet. und dein schöner Navdrawer währe auch weg.


    führe doch in der onCreate die entsprechende TransAction aus zu deinen Start Fragment aus.


    PS. Habe mir deinen Quellcode angesehen, und gemerkt das du gar keine Button ... in den Fragments hast. Somit brauchst du den Listner auch nicht. Solltest du einen Button im Fragment brauchen weisst du nun wie die OnClick Methode erstellst.


    Ich glaube das mit dem Frame Layout verstehst du etwas falsch. Dies dient nur als Container Platzhalter für die Layouts die in den Fragment Klasse geladen werde. Es wird somit immer nur der Platzhalter "content_main.xml" mit dem Layout des Fragments gefüllt.
    dein Activity_main.xml bleibt somit die ganze zeit geladen.


    Sinnvoll ist auch im NavDrawer zuprüfen ob das jeweilige Fragment schon geladen ist.


    So jetzt wird in der doInBackground garnichts mehr ausgeführ. Damit weißt du auch das der Fehler bei deiner URL Connection liegt.
    Hier ein Beispiel für den aufbau der Conektion. Habe den Task als innere Klasse erstellt ist aber bei externner das gleiche.



    main.xml

    einen Thread startet man mit .start() mit execute(...) sollte es auch gehen.
    Aber du hast den Konstruktor der Kasse überladen und nutzt somit nicht den auto generierten Konstruktor, da müsstest du die super Kalsse auch aufrufen.


    public ActivityDataSource(TextView textView) {
    super();
    this.textView = textView;
    }

    Hi, eigentlich ist das nicht viel anders. Da du in eine Fragment bist und die onKlick Events in der MainActivity ankommen musst du den Oncklicklistner in der Fragment Klasse Importieren.


    Bei der Einrichtung der Button mit ( findViewByIId) im Fragment brauchst du den bezug zur Activity in dem das Fragment läuft ( getActivity() )



    public class FragKlass extends Fragment implements OnClickListener {
    ...
    public void onActivityCreated(Bundle savedInstanceState) {
    ...
    Button bt = (Button) getActivity().findViewById(R.Id.button1):
    bt.setOnClickListener(this);
    ...
    }


    public void onClick(View v) {
    // Clickhandler für deine Button

    }


    Ps. Das Attribut onclick ist in XML nicht nutzbar.

    Hi, wen ich es richtig verstehe willst du eine dauerhafte Verbindung zum Bluetooth Gerät aufbauen. Dafür ist ein Thread nicht sonderlich geeignet. Ein Thread wird gestartet und wenn er durch gelaufen ist beendet er sich.Danach muss er wieder neu erstellt (new …) und gestartet werden. Denke dafür würde sich ein Service besser eignen.
    http://www.programmierenlernen…se-threads-und-asynctask/
    http://www.bs7-augsburg.de/aic…_Course_2_4_Threading.pdf

    hi Du solltest das Beispiel auch nicht eins zu eins übernehmen dies soll nur als Anregung dienen.

    • Wenn du wirklich richtig Android apps egal ob für ein Handy oder eine Uhr programmieren willst. Dann benutze android studio auf dem pc . Und erstelle eine richtige eigen signierte apk. Die kannst du dann auch versuchen bei Google play hochzuladen . Und wenn Google es geprüft hat wird sie auch im Store verfügbar sein.

    erstmal zur Info die minsdkverrsion legt wie der Name schon sagt die kleinste android Version fest auf der die app läuft die sollte immer kleiner als die installierte Version sein. Hast du wirklich API 25auf der Uhr? Aber das ist nicht der Fehler.


    Wie so machst du immer das setEneble das macht man bei Radio Button aber nicht bei normalen Button.
    Wo stürzt die App genau ab? Nach dem Start drückst du Rekord und bei Stopp bricht sie ab richtig?


    Dein Code ist etwas ungewöhnlich schaue mal das Beispiel auf der Google devlopper Seite an. https://developer.android.com/…/media/mediarecorder.html

    Um die Datei an das Handy zu schicken solltest du dich mit Bluetooth beschäftigen. Oder einen Intent zu der Bluetooth app auf der Uhr durchführen. Schaue dir das Thema intent mal an.

    hi zu deinem Code
    @Override
    public void onClick(View v){
    myAudioRecorder.stop();
    myAudioRecorder.release();
    myAudioRecorder= null;
    record.setEnabled(true);
    stop.setEnabled(false);
    play.setEnabled(true);


    Was soll das myAudiorecorder gleich null ?

    outputFile= Environment.getExternalStorageDirectory().getAbsolutePath()+"/recording.3gp";


    Schreibe einfach mal outputFile= "recording.3gp";
    Dann sollte die Datei im app Speicher abgelegt werden da bracht du keine besonderen rechte. Wenn das geht weißt du wo der Fehler ist.

    hi, zum Verständnis deiner App. Du willst wenn man den Rekord Button drückt eine Aufnahme gemacht wird, und bei play wiedergegeben wird. Richtig?
    Ich habe leider keine smartwhach kann es nicht testen.
    Ist auf der Uhr auch der Media Player und autorecordner auch vorhanden?
    Ebenfalls kann es an den premisson liegen, so das die Uhr keinen Zugriff Erlaubnis auf den externen Speicher hat.
    Bei dieser Zeile wurde mich interessieren ob outputFile " null " ist.
    outputFile= Environment.getExternalStorageDirectory().getAbsolutePath()+"/recording.3gp";
    Prüfte es mit dem debuger oder gib einen tost aus mit dem Inhalt der Variablen.
    Nach dem sie gesetzt wurde.


    Da du wahrscheinlich die app in der IDE laufen lässt könnte es sein das da die nötigen rechte erteilt sind.
    Du setzt zwar die nötigen premisson im Manifest aber ab android 6.0 reicht dies nicht mehr aus , da müssen die rechte in der app vom User bestätigt werden.