Onclick Avtivity funktioniert nicht

R

rufux

Ambitioniertes Mitglied
5
Ich schon wieder also hier ertsmal code:

main.java
Code:
public class main extends Activity {
 Button sendButton;
 Button recieveButton;
  
 private Intent intentService;
 
     public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView tv = new TextView(this);
        tv.setText("main");
        setContentView(R.layout.main);
        sendButton = (Button) findViewById(R.id.sms_sending_button);
        recieveButton = (Button) findViewById(R.id.sms_recieving_button);
         
           sendButton.setOnClickListener(new View.OnClickListener() {
                 public void onClick(View v) {
                    [COLOR=red][B]Intent intent = new Intent(this, sms_sending.class);
                         this.startActivity(intent);[/B][/COLOR]
                 }
            });
            recieveButton.setOnClickListener(new View.OnClickListener() {
                   public void onClick(View v) {
                      [COLOR=red][B] Intent intent = new Intent(this, sms_recieving.class);
                       this.startActivity(intent);[/B][/COLOR]
                   }
             });    
}
}

sms_sending.java
Code:
public class sms_sending extends Activity {
        
    String number = "5556" ;
    String msg ="Ich bin nur ein Test";
   
  public void onCreate(Bundle savedInstanceState)  {
         super.onCreate(savedInstanceState);
         TextView tv = new TextView(this);
         tv.setText("send");
         setContentView(R.layout.sending);
         
            sendSMS(number,msg);}
    }
   private void sendSMS(String number, String message){
 
 PendingIntent pi = PendingIntent.getActivity(this, 0, new Intent(this,sms_sending.class), 0);   
    SmsManager sms = SmsManager.getDefault();
    sms.sendTextMessage(number, null, message, pi, null);
   }

public IBinder onBind(Intent intent) {
 
 return null;
}
}  
}

so und ich bekomme an der rot markierten Stelle eine Fehlermeldung.

Er meldet: The constructor Intent(new View.OnclickListener(){}, Class<sms_sending> is undefined

und

the method startActivity(Intent) is undefined for the type new View.OnClickListener(){}


evtl findet ja einer das Problem

VG
und Danke
 
Versuch mal anstatt:

Code:
Intent intent = new Intent([COLOR=Red]this[/COLOR], sms_sending.class);
                        this.startActivity(intent);
dieses hier:

Code:
Intent intent = new Intent([COLOR=Red]NameDeinerKlasse.this[/COLOR], sms_sending.class);
                        this.startActivity(intent);

Ansonsten sieht er nämlich den OnClickListener als this und nicht deine Klasse.
 
  • Danke
Reaktionen: rufux
sonst probier mal das:
Code:
public class main extends Activity {
 Button sendButton;
 Button recieveButton;
  
 private Intent intentService;
 
     public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView tv = new TextView(this);
        tv.setText("main");
        setContentView(R.layout.main);
        sendButton = (Button) findViewById(R.id.sms_sending_button);
        recieveButton = (Button) findViewById(R.id.sms_recieving_button);
         
           sendButton.setOnClickListener([COLOR="Red"]this[/COLOR]);
           recieveButton.setOnClickListener([COLOR="red"]this[/COLOR]);

        [COLOR="red"]public void onClick(View src) {
       
        if(src.getId() == R.id.sms_sending_button) {
            Intent intent = new Intent(this, sms_sending.class);
                         startActivity(intent);  }

        if(src.getId() == R.id.sms_receiving_button) {
              Intent intent = new Intent(this, sms_recieving.class);
                       startActivity(intent);
}[/COLOR]
}


Ich habs jetzt nicht ausprobiert, müsste aber funktionieren :D
 
  • Danke
Reaktionen: rufux
HeroUser96 schrieb:
sonst probier mal das:

Ich habs jetzt nicht ausprobiert, müsste aber funktionieren :D

Wird nicht funktionieren, dann müsste er erstmal View.OnClickListener implementieren :razz:
 
  • Danke
Reaktionen: rufux
Es ging ja eigentlich eher um das Prinzip...
Aber du hast natürlich recht
 
also ich habe die änderungen von Hero jetzt übernommen...

Doch leider habe ich jetzt den Fehler, der im Thread besprochen wurde nicht verstanden

zumindest bekomme ich jetzt hier:

Code:
sendButton.setOnClickListener(this);

und hier
Code:
public void onClick(View src) {

einen Fehler

bei dem sendButton.setOnclickListener(this) habe ich jetzt ein main.this draus gemacht... zumindest kommt kein fehler mehr... Ist das soweit richtig


bei der Funktion onClick bringt er mir folgenden Fehler:

void is an invalid type for the variable onClick... Das macht für mich keinen Sinn... Warum kann das kein void sein und was muss ich machen?

ausserdem sagt er mir, dass irgendwelche Klammern fehlen?

Ich bin überfragt...

Vielen Dank schonmal
 
Sofern du die erste Zeile von HeroUser zu
public class main extends Activity implements View.OnClickListener{
änderst, sollte es funktionieren.
Achja, in der onClick fehlt eine schließende Klammer bei der zweiten if.
 
  • Danke
Reaktionen: rufux
Sofern du die erste Zeile von HeroUser zu
public class main extends Activity implements View.OnClickListener{
änderst, sollte es funktionieren.

Stimmt, dass hab ich vergessen
Aber eigentlich müsste Eclipse doch eine Fehlermeldung rauswerfen, dass man die Methoden implementieren muss :confused:
 
Eclipse meckert nur wenn du "implements XXX" einfügst, aber die Methoden von XXX nicht implementierst. Ohne das "implements" ist das "public void onClick(View src)" eine normale, von dir geschriebene Methode - die nunmal onClick heißt ohne das sie die Semantik von "onClick" hat.
 
  • Danke
Reaktionen: rufux
So das hilft mir schonmal weiter...

Vielen Dank...

Nun habe ich noch eine Grundlegende Frage, die sich daraus leider entwickelt ;)

Ich rufe ja mit Hilfe des Intents quasi eine "neue Seite" auf :)

Nun bekomme ich jedoch wenn ich auf den Buton klicke eine Fehlermeldung, dass die Klasse nicht aufgerufen werden kann.

Natürlich zeigt mir Eclipse keine Fehlermeldungen mehr an...

Wie bekomme ich raus, wo der Fehler her kommt?

Ok das hat sich erledigt... Ich bekomme eine NULL Pointer Exception

und zwar:
DeviceMonitor]Sending jdwp tracking request feailed
ddms]null

der rest kommt scheinbar daher, dass ddms null ist? was ist ddms und wo wird das gesetzt?

Der Fehler lautet übrigens: The application sms_sending(process com.test.main) has stopped unexpectedly. Please try again.

Viele Grüße
 
Zuletzt bearbeitet:
Wie bekomme ich raus, wo der Fehler her kommt?
In der logcat Ausgabe siehst du die detaillierte Fehlerausgabe:
> OrdnerDeinesSDK\tools\adb.exe logcat


Leitet die sms_sending.class auch von einer Activity ab?

Edit:
Sehe gerade, das du die Log Ausgabe zwischenzeitlich schon gefunden hast :)
Prüf ob in deiner sms_sending.java File von der Klasse Activity geerbt wird.
 
Zuletzt bearbeitet:
So da ich einfach völlig überfragt bin hier mein CODE


meine Main
Code:
public class main extends Activity implements View.OnClickListener{
 
 Button sendButton;
 Button recieveButton;
 
 private Intent intentService;
 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView tv = new TextView(this);
        tv.setText("main");
        setContentView(R.layout.main);
        sendButton = (Button) findViewById(R.id.sms_sending_button);
        recieveButton = (Button) findViewById(R.id.sms_recieving_button);
 
        sendButton.setOnClickListener((android.view.View.OnClickListener) main.this);
        recieveButton.setOnClickListener((android.view.View.OnClickListener) main.this);
  }
 
 public void onClick(View v) {
  if(v == sendButton){
       Intent intent = new Intent();
       intent.setClass(main.this, sms_sending.class);
       startActivity(intent);
 
  }
   if(v == recieveButton){
   Intent intent = new Intent();
   intent.setClass(main.this, sms_recieving.class);
   startActivity(intent);
  }
 
 }
}

meine sms_sending
Code:
public class sms_sending extends Activity  {
 
    String number = "5556" ;
    String msg ="Ich bin nur ein Test";
 
  public void onCreate(Bundle savedInstanceState)  {
         super.onCreate(savedInstanceState);
         TextView tv = new TextView(this);
         tv.setText("send");
         setContentView(R.layout.sending);
      sendSMS(number,msg);}
 
 
   private void sendSMS(String number, String message){
 
    PendingIntent pi = PendingIntent.getActivity(this, 0, new Intent(this,sms_sending.class), 0);   
    SmsManager sms = SmsManager.getDefault();
    sms.sendTextMessage(number, null, message, pi, null);
   }
public IBinder onBind(Intent intent) {
 // TODO Auto-generated method stub
 return null;
}}

und zu guter letzt meine Manifest
Code:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.main"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" 
android:label="@string/app_name" 
android:theme="@drawable/background">
 
<activity android:name=".main"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
 
<category android:name="android.intent.category.LAUNCHER" />
 
 
</intent-filter>
</activity>
<activity android:name=".sms_sending"></activity>
<activity android:name=".sms_recieving"></activity>
<activity android:name=".link_test"></activity>
</application>
<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
<uses-permission android:name="android.permission.RECIEVE_SMS"></uses-permission>
 
<uses-sdk android:minSdkVersion="4" />
 </manifest>

so und nun die Fehlermeldung ;)

11-19 12:10:04.716: ERROR/AndroidRuntime(681): Uncaught handler: thread main exiting due to uncaught exception
11-19 12:10:04.736: ERROR/AndroidRuntime(681): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.test.main/com.test.smssending.sms_sending}; have you declared this activity in your AndroidManifest.xml?
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1480)
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1454)
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at android.app.Activity.startActivityForResult(Activity.java:2661)
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at android.app.Activity.startActivity(Activity.java:2705)
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at com.test.main.main.onClick(main.java:54)
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at android.view.View.performClick(View.java:2344)
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at android.view.View.onTouchEvent(View.java:4133)
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at android.widget.TextView.onTouchEvent(TextView.java:6510)
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at android.view.View.dispatchTouchEvent(View.java:3672)
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882)
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882)
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882)
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882)
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1712)
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1202)
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at android.app.Activity.dispatchTouchEvent(Activity.java:1987)
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1696)
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at android.view.ViewRoot.handleMessage(ViewRoot.java:1658)
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at android.os.Handler.dispatchMessage(Handler.java:99)
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at android.os.Looper.loop(Looper.java:123)
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at android.app.ActivityThread.main(ActivityThread.java:4203)
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at java.lang.reflect.Method.invokeNative(Native Method)
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at java.lang.reflect.Method.invoke(Method.java:521)
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at dalvik.system.NativeStart.main(Native Method)

So sorry für den riesen Eintrag... Ich hoffe jedoch, dass mir jemand weiter helfen kann

vg
 
Zuletzt bearbeitet:
11-19 12:10:04.716: ERROR/AndroidRuntime(681): Uncaught handler: thread main exiting due to uncaught exception
11-19 12:10:04.736: ERROR/AndroidRuntime(681): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.test.main/com.test.smssending.sms_sending}; have you declared this activity in your AndroidManifest.xml?
11-19 12:10:04.736: ERROR/AndroidRuntime(681): at android.app.Instrumentation.checkStartActivityResu lt(Instrumentation.java:1480)
Im Android-Manifest musst du die Activities so deklarieren:

Code:
<activity android:name=".KlassenName" />
das müsste in deinem Fall dann glaube ich so sein:

Code:
<activity android:name=".sms_sending" />
 
Zuletzt bearbeitet:
ja ich weiß, dass war auch nur nen test... also ursprünglich hatte ich es so, gleicher Fehler...
 
niemand, der mir helfen kann?
 
Hast du gar keine Packages für deinen Quellcode? Liegen alle Klassen in default?

Edit:
Wenn man sich mal die Spezifikationen im Dev Guide anguckt, findet man folgendes für android:name im activity-tag in der Manifest.xml:
android:name
The name of the class that implements the activity, a subclass of Activity. The attribute value should be a fully qualified class name (such as, "com.example.project.ExtracurricularActivity"). However, as a shorthand, if the first character of the name is a period (for example, ".ExtracurricularActivity"), it is appended to the package name specified in the <manifest> element.
Wenn du also "com.test.main" angibst als package und deine sms_sending Activity in "com.test.smssending" liegt, was der Stacktrace ja zeigt, dann musst du den Namen der Activity auch entsprechend angeben: "com.test.smssending.sms_sending", ansonsten hängt er es nur an das Package an und findet unter "com.test.main.sms_sending" natürlich nichts.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: rufux
hab ich schon, nur habe ich weggelassen...

liegen alle in

com.smstest.

und dann habe ich da eine main, sms_sending und eine sms_recieving class

er zeigt mir auch im eclipse keine fehler mehr an

nur der LogCat... siehe weiter oben.
 
super...

danke, genau das war es natürlich ;)
man gut, dass man mit nicht richtig lesen so seine Zeit verschwenden kann ;)
 
So jetzt, da alles soweit funktioniert und ich jetzt auch ENDLICH eine Kommunikation zwischen den beiden Emulatoren hinbekomme läuft es jetzt auch.

habe jetzt aber noch ein anderes Problem.

Ich rufe ich meiner main per intent auf einem onclick meine Klasse sms_sending auf.

Das Funktioiniert wie gesagt auch. Doch er sendet SMS bis der Speicher voll ist :) Also nicht eine sondern hunderte.

Idee war jetzt, dass ich jetzt in der sms_sending class wieder zurück zur main gehe.

Aber das geht irgendwie nicht.

Ich versuche in der sms_sending mit folgendem Code zurück in die main zu kommen:

Code:
public void onCreate (Bundle x)
super.onCreate(x);
TextView tv = new TextView(this);
tv.setText("send");
setContactView(R.layout.sending);
sendSMS(number,msg);
Intent intent = new Intent();
intent.setClass(sms_sending.this,main.class);

vielelicht kann mir jemand helfen.

vielen dank

Update:

Also habs hinbekommen, dass er nur eine schickt ;)

Aber trotzdem geht er nicht zurück auf den mainscreen
 
Zuletzt bearbeitet:
niemand eine idee?
 

Ähnliche Themen

SaniMatthias
Antworten
19
Aufrufe
942
swa00
swa00
O
Antworten
15
Aufrufe
2.955
ORHUX
O
K
Antworten
3
Aufrufe
1.164
Kapikalaani
K
Zurück
Oben Unten