problem beim starten einer neuen activity

  • Antworten:7
  • OffenNicht stickyBentwortet
  • Forum-Beiträge: 3

21.03.2017, 13:19:12 via Website

Auch an Euch erstmal ein freundliches und fröhliches Hallo, bin auch hier zum ersten mal

Ich bin ziemlich neu in der Android Programmierung, deshalb bitte Rücksicht nehmen

Nun zu meinem Problem:

ich möchte aus meiner StartActivity eine weiter aufrufen, im Grunde genommen will ich die activity eigentlich aus einem fragment aufrufen, hat aber nicht geklappt, deswegen wollte ich es erst mal aus der activity probieren, damit ich sehe ob das problem vielleicht eher vom Aufruf selber kommt. leider klappt es aus der activity auch nicht jedes mal wenn ich die ImageView anklicke stürtzt die app ab.
über den klick auf die image view rufe ich normalerweise das fragment auf, was auch funktioniert, jedoch mit etwas Performance-Problemen (fragment startet ziemlich verzögert.
hier mal der code von activity und manifest. ich hoffe ihr könnt mir helfen. Thx schonmal im voraus.

Activity:

public class StartActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.start_activity_layout);
    if (savedInstanceState != null) {
        return;
    }
    ImageView imgClick = (ImageView) findViewById(R.id.bookMaulwurfGrabowski);
    addShowHideListener(imgClick);
}
void addShowHideListener(ImageView image) {
    image.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Toast.makeText(StartActivity.this, "You clicked on ImageView", Toast.LENGTH_LONG).show();
            Intent activityChangeIntent = new Intent(StartActivity.this, TextActivity.class);
            StartActivity.this.startActivity(activityChangeIntent);
        }
    });
}

}

und die Manifest:

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".StartActivity"
        android:label="StartActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".TextActivity"
        android:label="TextActivity">
    </activity>
</application>

Antworten
  • Forum-Beiträge: 2.902

21.03.2017, 13:59:44 via Website

@Pascal

Hier und "drüben" angefragt - habe mir erlaubt "drüben" zu antworten :.)

Liebe Grüße - Stefan
[ App - Entwicklung ]

bowser36

Antworten
  • Forum-Beiträge: 434

21.03.2017, 14:10:19 via Website

Dein Code aus dem Post sieht fehlerfrei aus (hoffe ich habe nichts übersehen).
Bist du sicher dass der Click getriggert wird? Setz mal in den ClickListener ein

Log.d("xx", "clicked? oO "); 

Vermutlich wird das nicht angezeigt, da es eine ImageView ist.

Mögliche Lösungen
- probiere die IV auf clickable zu setzen, entweder im Java-Code oder in der xml deines Layouts*
- gleich einen ImageButton verwenden
- einen TouchListener verwenden (dann wird aber bei Berührung schon getriggert, das Verhalten eines Buttons ist hingegen ja so definiert dass erst beim "Loslassen" getriggert wird)

*Code:

xml:

<ImageView
    ...
    clickable="true"
    ...
/>

Java:

imageView.setClickable(true);

(Code aus dem Kopf, ggf. mal mit der Syntaxhilfe gucken, bekommst du schon hin ;) )

— geändert am 21.03.2017, 14:15:37

Open Source

Antworten
  • Forum-Beiträge: 3

21.03.2017, 14:32:33 via Website

nehme ich den Intent raus, wird bei Click die Toastmeldung ausgegeben. Der Listener scheint zu funktionieren. Ich werde später das Logcat anhängen.

Antworten
Ludy
  • Mod
  • Blogger
  • Forum-Beiträge: 7.167

21.03.2017, 15:55:30 via Website

Hallo bowser36,

herzlich willkommen hier im Forum (*)

"richtig" wäre das

public class StartActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.start_activity_layout);
        if (savedInstanceState != null) {
            return;
        }
        ImageView imgClick = (ImageView) findViewById(R.id.bookMaulwurfGrabowski);
        addShowHideListener(imgClick);
    }
    void addShowHideListener(ImageView image) {
        image.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Toast.makeText(getBaseContext(), "You clicked on ImageView", Toast.LENGTH_LONG).show();
                Intent activityChangeIntent = new Intent(StartActivity.this, TextActivity.class);
                startActivity(activityChangeIntent);
            }
        });
    }
}

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

Lebensmittelwarnung App-Thread

Download Samsung Firmware Tool

swa00

Antworten
  • Forum-Beiträge: 2.902

21.03.2017, 16:31:29 via Website

Hallo Ludy ,

du hast ihm das geändert - oder habe ich was übersehen ?

StartActivity.this.startActivity(activityChangeIntent);

Richtig ?

Wenn ja - hat er auch schon probiert ..... ich denke der Fehler sitzt in der TextActivity

— geändert am 22.03.2017, 08:00:08

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
  • Forum-Beiträge: 3

21.03.2017, 19:32:24 via Website

vielen Dank an alle, hab es hinbekommen. Das Stichwort war NPE, hab einen falschen Wert in der TextActivity für die einzulesende Datei gehabt. (lightbulb)

Antworten

Empfohlene Artikel