problem beim starten einer neuen activity

  • Antworten:7
  • Bentwortet
bowser36
  • 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
swa00
  • Forum-Beiträge: 3.704

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
pepperonas
  • 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
bowser36
  • 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
  • Admin
  • Forum-Beiträge: 7.958

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.☺

☕ Buy Me A Coffee ☕

Lebensmittelwarnung-App

✨Meine Wunschliste✨

📲Telegram NextPit News📲

swa00

Antworten
swa00
  • Forum-Beiträge: 3.704

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
bowser36
  • 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