Anfänger Frage: Inhalt der seekBar per Bluetooth senden

  • Antworten:11
Kerstin jung
  • Forum-Beiträge: 8

18.02.2013, 13:16:48 via Website

Ich habe folgendes Problem: Ich habe die App Bluetooth Chat um einige Knöpfe erweitert, die einen automatischen Text senden. Dazu habe ich bei properties bei onClick immer den Namen des jeweiligen Programmteil eingegeben der aufgerufen werden soll. z.B. onClick = halloClick.

Im programm text habe ich dann folgendes eingefügt:

1public void halloClick(View view) {
2 sendMessage("Hallo");
3 }


Das funktioniert auch ganz gut. Wenn ich den Knopf drücke wird "Hallo" gesendet.

Jetzt habe ich einen Knopf und eine seekBar und möchte das bei drücken auf den Knopf der Wert der seekBar gesendet wird. also habe ich beim Button das onClick auf "sendValue" gesetzt und den code ergänzt den ich im Internet gefunden habe:

1public void sendValue(View view) {
2 sendMessage(seekBar1.getProgress ());
3 }

Leider meldet Eclipse dann: seekBar1 cannot be resolved.

Jetzt die Frage: was habe ich falsch gemacht bzw. Vergessen so dass die seekBar nicht erkannt wird. Im Layout ist sie so angelegt:
1<SeekBar
2 android:id="@+id/seekBar1"
3 android:layout_width="match_parent"
4 android:layout_height="wrap_content"
5 android:max="100"
6 android:progress="0"/>

Danke schon mal für eure Hilfe!

Antworten
Andreas Weichert
  • Forum-Beiträge: 287

18.02.2013, 13:50:39 via Website

Durch das Anzeigen eines Layouts wird keine Variable in der Activity angelegt - das mußt Du schon selber tun.

SeekBar sb;

void onCreate( .....)
{

.......................
sb = (SeekBar) findViewById(R.layout.seekBar1);


}

Antworten
Kerstin jung
  • Forum-Beiträge: 8

19.02.2013, 11:27:19 via Website

Danke für deine Antwort.
Leider funktioniert es immernoch nicht. Jetzt steht bei der onCreate methode "cannot be resolved".

1SeekBar sb;
2
3 @Override
4 public void onCreate(Bundle savedInstanceState) {
5 super.onCreate(savedInstanceState);
6 if(D) Log.e(TAG, "+++ ON CREATE +++");
7
8 // Set up the window layout
9 requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
10 setContentView(R.layout.main);
11 getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title);
12
13 // Set up the custom title
14 mTitle = (TextView) findViewById(R.id.title_left_text);
15 mTitle.setText(R.string.app_name);
16 mTitle = (TextView) findViewById(R.id.title_right_text);
17
18 // Get local Bluetooth adapter
19 mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
20
21 // If the adapter is null, then Bluetooth is not supported
22 if (mBluetoothAdapter == null) {
23 Toast.makeText(this, "Bluetooth is not available", Toast.LENGTH_LONG).show();
24 finish();
25 return;
26 }
27 sb = (SeekBar) findViewById(R.layout.seekBar1);
28 }

Irgendwie steig ich da noch nicht so wirklich durch :(

Antworten
Kullorki
  • Forum-Beiträge: 55

19.02.2013, 14:19:53 via Website

Kerstin jung
Danke für deine Antwort.
Leider funktioniert es immernoch nicht. Jetzt steht bei der onCreate methode "cannot be resolved".

1sb = (SeekBar) findViewById(R.layout.seekBar1);

Irgendwie steig ich da noch nicht so wirklich durch :(

weil genau das nicht R.layout sondern
sb = (SeekBar) findViewById(R.id.seekBar1);
heißen muss ;)

mfg

— geändert am 19.02.2013, 14:20:09

Antworten
Kerstin jung
  • Forum-Beiträge: 8

19.02.2013, 17:16:05 via Website

Jetzt sind bei onCreate keine fehler mehr. Top schonmal.

Aber bei
1public void sendValue(View view) {
2 sendMessage (SeekBar1.getProgress ());
3 }
kommt immernoch der resolve Fehler.
Hätte nicht gedacht das so eine einfache anwendung so schwer zu Programmieren ist...

Antworten
Kullorki
  • Forum-Beiträge: 55

19.02.2013, 18:39:23 via Website

das ist nicht schwer.

das sieht man schon daran , dass du in der layout deine seekbar so hingeschrieben hast
<SeekBar
android:id="@+id/seekBar1"
klingelts? ^^

Du hast jetzt ein seekbar objekt erstellt das "sb" heißt und mit der Oberfläche deiner app verbunden ist.
Folglich musst du auch dieses objekt benutzen wenn du den fortschritt deines Objektes haben wilst, oder sonstiges mit deinem Objekt machen willst
zum bleistift:
1sb.getProgress();
mfg

— geändert am 19.02.2013, 18:41:57

Antworten
Kerstin jung
  • Forum-Beiträge: 8

19.02.2013, 22:22:35 via Website

Wieder ein erfolgreicher Schritt! Danke!
leider kommt jetzt:

The method sendMessage(String) in the type BluetoothChat is not applicable for the arguments (int)

So wie ich das sehe stimmt da etwas mit dem Wert nicht der ausgegeben wird. wie kann ich den in einen string umwandeln?

Antworten
Kullorki
  • Forum-Beiträge: 55

19.02.2013, 22:53:53 via Website

Dir fehlen anscheinend grundlegende Java kentnisse ...

int +"" = String

Antworten
Kerstin jung
  • Forum-Beiträge: 8

19.02.2013, 23:10:15 via Website

Es funktioniert!!!!!!
Danke Danke Danke! Ihr habt mir wirklich sehr geholfen. Top!

nur der Vollständigkeit halber: Gibt es einen befehl der das ganze ins ASCII format überträgt? also anstelle von z.B 255, 7070 sendet? (FF im Hexa system)

Antworten
Kullorki
  • Forum-Beiträge: 55

19.02.2013, 23:16:01 via Website

String derHExWert = Integer.toHexString(DeineZahl); sollte den Job erledigen

mfg

— geändert am 19.02.2013, 23:16:50

Antworten
Kerstin jung
  • Forum-Beiträge: 8

19.02.2013, 23:49:15 via Website

Schon wieder ein Volltreffer. Du hasts echt drauf!

Ich weiß man soll nicht zu gierig sein aber ein Punkt fehlt noch zur Perfektion:
Wie kann ich es machen das Führende nullen gesendet werden? also 00 und 03 anstelle von 0 und 3.
und das die Kleinbuchstaben Großbuchstaben sind also 3F statt 3f?

Ich hoffe das weist du auch. Danke schonmal für deine Hilfe. Du hast mir echt total weitergeholfen!

Antworten