Form zu nickname wählen...

  • Antworten:11
Minzkraut
  • Forum-Beiträge: 8

24.02.2014, 19:42:47 via Website

Hallo AndroidPIT Community

Nachdem das dass mit den befehlen geklappt hat wollte ich bei meiner chat app noch ein fenster einbauen über welches man am anfang seinen nickname wählen kann... das hatte ich mir allerdings leichter vorgestellt und ich habe grade wiedermal kein plan was ich tun muss xD

ich verwende diese vorlage: seshadripera.blogspot.de/2013/04/android-tcp-connection-chat-application.html
und hab noch so gut wie nicht verändert...

wie bereits gesagt will ich nun dass vorher ein fenster auf geht in dem man einen nickname eingeben kann und dieser soll dann sofort... also sobald möglich gesendet werden... denn was als erstes ankommt wird als nickname verwendet.

Ich hoffe ihr könnt mir da helfen

Grüße, Minzkraut

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

24.02.2014, 19:45:19 via Website

Das kannst du mit einem PopUp AlertDialog machen:
http://www.androidsnippets.com/prompt-user-input-with-an-alertdialog

Oder du machst eine eigene Activity + Layout dafür.
Aber für deine Zwecke sollte der AlertDialog ausreichen

— geändert am 24.02.2014, 19:45:31

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Minzkraut
  • Forum-Beiträge: 8

24.02.2014, 19:51:21 via Website

wo genau ist eigentlich dass form_load ereignis... oder wie man dass bei java nennt :/
also dass die inputbox direkt engezeigt wird

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

24.02.2014, 19:53:20 via Website

Bei android ist das die onCreate Funktion. In der wird die Activity aufgebaut und das Layout und so weiter gesetzt.
in diesen Bereich kannst du auch dein AlertDialog setzen

PS: Bitte noch mal Grundlagen von Android anschauen.
Welche Prgm Sprache hast du vorher gemacht?

— geändert am 24.02.2014, 19:54:33

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Minzkraut
  • Forum-Beiträge: 8

24.02.2014, 20:34:05 via Website

also ich hab mal versucht dass an passender stelle ein zu fügen... hat jedoch nicht sonderlich gut geklappt denn jetzt stürzt die app ab sobald man sie startet... der code sieht dann immoment so aus... und fehler werden auch von eclipse keine angezeigt:
1package com.WipfsChat.Client;
2
3import android.os.Bundle;
4import android.app.Activity;
5import android.text.Editable;
6import android.view.Menu;
7import android.media.MediaPlayer;
8import android.app.Activity;
9import android.os.AsyncTask;
10import android.os.Bundle;
11import android.view.View;
12import android.widget.Button;
13import android.widget.EditText;
14import android.widget.ListView;
15
16
17
18
19import java.util.ArrayList;
20
21import android.app.AlertDialog;
22import android.content.DialogInterface;
23public class MyActivity extends Activity
24{
25 public MediaPlayer mp;
26 private ListView mList;
27 private ArrayList<String> arrayList;
28 private MyCustomAdapter mAdapter;
29 private TCPClient mTcpClient;
30 private Editable nick;
31
32 @Override
33 public void onCreate(Bundle savedInstanceState)
34 {
35
36 super.onCreate(savedInstanceState);
37 setContentView(R.layout.main);
38
39 arrayList = new ArrayList<String>();
40
41 final EditText editText = (EditText) findViewById(R.id.editText);
42 Button send = (Button)findViewById(R.id.send_button);
43
44 //relate the listView from java to the one created in xml
45 mList = (ListView)findViewById(R.id.list);
46 mAdapter = new MyCustomAdapter(this, arrayList);
47 mList.setAdapter(mAdapter);
48 AlertDialog.Builder alert = new AlertDialog.Builder(this);
49
50 alert.setTitle("Nickname");
51 alert.setMessage("Set nickname");
52
53 // Set an EditText view to get user input
54 final EditText input = new EditText(this);
55 alert.setView(input);
56
57 alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
58 public void onClick(DialogInterface dialog, int whichButton) {
59 nick = input.getText();
60 // Do something with value!
61 }
62 });
63
64 alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
65 public void onClick(DialogInterface dialog, int whichButton) {
66 // Canceled.
67 }
68 });
69
70 alert.show();
71 // connect to the server
72 new connectTask().execute("");
73 mTcpClient.sendMessage(nick.toString());
74 send.setOnClickListener(new View.OnClickListener() {
75 @Override
76 public void onClick(View view) {
77
78 String message = editText.getText().toString();
79
80 //add the text in the arrayList
81 // arrayList.add("Mobile_Guest: " + message);
82
83 //sends the message to the server
84 if (mTcpClient != null) {
85 mTcpClient.sendMessage(message);
86 }
87
88 //refresh the list
89 mAdapter.notifyDataSetChanged();
90 editText.setText("");
91 }
92 });
93
94 }
95
96 public class connectTask extends AsyncTask<String,String,TCPClient> {
97
98 @Override
99 protected TCPClient doInBackground(String... message) {
100
101 //we create a TCPClient object and
102 mTcpClient = new TCPClient(new TCPClient.OnMessageReceived() {
103 @Override
104 //here the messageReceived method is implemented
105 public void messageReceived(String message) {
106 //this method calls the onProgressUpdate
107 publishProgress(message);
108 }
109 });
110 mTcpClient.run();
111
112 return null;
113 }
114
115 @Override
116 protected void onProgressUpdate(String... values) {
117 super.onProgressUpdate(values);
118
119 //in the arrayList we add the messaged received from server
120
121 if (values[0].startsWith("/sw")){
122
123 } else if (values[0].startsWith("/stw")){
124
125 }else if (values[0].startsWith("/u")){
126 }else{
127 arrayList.add(values[0].replace("|", "\n"));
128 MediaPlayer mp = MediaPlayer.create(getApplicationContext(), R.raw.snd);
129 mp.start();
130 }
131
132
133
134 // notify the adapter that the data set has changed. This means that new message received
135 // from server was added to the list
136 mAdapter.notifyDataSetChanged();
137 }
138 }
139}

um noch aufs thema grundlagen ein zu gehen... bis auf diese eine app habe ich eigentlich nicht vor noch weitere android apps zu programmieren... will eiegtnlich erstmal bei Visual basic bzw .net bleiben... daher dachte ich lohnt es sich nicht nur dafür die ganzen grundlagen zu erlernen.

Gibts hier eigentlich sowas wie nen expander?

Grüße, Minzkraut

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

24.02.2014, 20:42:30 via App

Bei Eclipe gibt es LogCat dort werden alle Fehler angezeigt. Poste diesen Log mal dann sieht man welchen und wo der Fehler auftritt.
Ich glaub so was wie ein Expander in .net gibt es in android nicht. Du kannst dir mit ein Bisschen code aber einen selbst bauen.
Falls ich mich irre bitte ich um verbesserung

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Minzkraut
  • Forum-Beiträge: 8

24.02.2014, 20:53:02 via Website

ich hoffe das ist der log den du meinst:
102-24 19:49:42.847: E/Trace(612): error opening trace file: No such file or directory (2)
202-24 19:49:43.507: D/AndroidRuntime(612): Shutting down VM
302-24 19:49:43.507: W/dalvikvm(612): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
402-24 19:49:43.517: E/AndroidRuntime(612): FATAL EXCEPTION: main
502-24 19:49:43.517: E/AndroidRuntime(612): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.WipfsChat.Client/com.WipfsChat.Client.MyActivity}: java.lang.NullPointerException
602-24 19:49:43.517: E/AndroidRuntime(612): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
702-24 19:49:43.517: E/AndroidRuntime(612): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
802-24 19:49:43.517: E/AndroidRuntime(612): at android.app.ActivityThread.access$600(ActivityThread.java:130)
902-24 19:49:43.517: E/AndroidRuntime(612): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
1002-24 19:49:43.517: E/AndroidRuntime(612): at android.os.Handler.dispatchMessage(Handler.java:99)
1102-24 19:49:43.517: E/AndroidRuntime(612): at android.os.Looper.loop(Looper.java:137)
1202-24 19:49:43.517: E/AndroidRuntime(612): at android.app.ActivityThread.main(ActivityThread.java:4745)
1302-24 19:49:43.517: E/AndroidRuntime(612): at java.lang.reflect.Method.invokeNative(Native Method)
1402-24 19:49:43.517: E/AndroidRuntime(612): at java.lang.reflect.Method.invoke(Method.java:511)
1502-24 19:49:43.517: E/AndroidRuntime(612): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
1602-24 19:49:43.517: E/AndroidRuntime(612): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
1702-24 19:49:43.517: E/AndroidRuntime(612): at dalvik.system.NativeStart.main(Native Method)
1802-24 19:49:43.517: E/AndroidRuntime(612): Caused by: java.lang.NullPointerException
1902-24 19:49:43.517: E/AndroidRuntime(612): at com.WipfsChat.Client.MyActivity.onCreate(MyActivity.java:73)
2002-24 19:49:43.517: E/AndroidRuntime(612): at android.app.Activity.performCreate(Activity.java:5008)
2102-24 19:49:43.517: E/AndroidRuntime(612): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
2202-24 19:49:43.517: E/AndroidRuntime(612): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
2302-24 19:49:43.517: E/AndroidRuntime(612): ... 11 more
2402-24 19:49:45.857: E/TCP Client(612): C: Connecting...
2502-24 19:49:54.257: I/Process(612): Sending signal. PID: 612 SIG: 9

expander bezog sich übringens aufs forum, ich find estwas unschön wenn man einen code postet durch den man sich jedesmal durchscrollen muss ;D

Antworten
impjor
  • Forum-Beiträge: 1.793

24.02.2014, 21:07:01 via App

Minzkraut
Caused by: java.lang.NullPointerException
02-24 19:49:43.517: E/AndroidRuntime(612): at com.WipfsChat.Client.MyActivity.onCreate(MyActivity.java:73)

[/code]

expander bezog sich übringens aufs forum, ich find estwas unschön wenn man einen code postet durch den man sich jedesmal durchscrollen muss ;D
Schonmal angesehen?

LG

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Minzkraut
  • Forum-Beiträge: 8

24.02.2014, 21:11:46 via Website

ja dass ist die stelle
1mTcpClient.sendMessage(nick.toString());
dass passiert wohl wenn ich versuche es selbst iergendwie in zu basteln... aber was genau da falsch läuft wird mir iergndwie nicht klar :I
eigentlich kann dass doch nicht so schwer sein.

Antworten
impjor
  • Forum-Beiträge: 1.793

24.02.2014, 21:27:57 via App

Ist es auch nicht.

Hast du dir mal den Fehler angesehen? Entweder mTcpClient oder nick ist null => NullPointerException.

Bei dir anscheinend nick, da dieser erst gefüllt wird, wenn der User irgendein Dialog bestätigt, sehe ich das richtig? Du darfst den nick also auch erst dann senden.


LG

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Minzkraut
  • Forum-Beiträge: 8

24.02.2014, 22:04:35 via Website

manchmal ist man aber auch blöd xD... habs jetzt an der richtigen stelle.
Vielen dank nochmal für die Hilfe..

und noch ne letzte frage: Gibt es einen fachbegriff für die notifications in der statusleise?


Grüße, Minzkraut

— geändert am 24.02.2014, 23:07:54

Antworten
impjor
  • Forum-Beiträge: 1.793

24.02.2014, 22:17:10 via App

Minzkraut
und noch ne letzte frage: Gibt es einen fachbegriff für die notifications in der statusleise?
Das ist meines Wissens der Fachbegriff....

LG

— geändert am 24.02.2014, 22:17:34

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten