Abfrage von einzelnen Bilder

A

azubi

Neues Mitglied
0
Hallo,
ich habe ein Problem mit dem Auswahl von ausgewählten Bilder.
Es soll ein kleines Tool sein, wo man über die Benutzeroberfläche über Button "Wählen", zufällige Bilder auswählt. Mit Button "Rezept" soll das ausgewähltes Bild das Rezept angezeigen, bspw. wurde "maultaschen" gewählt, öffnet sich das Browser und zeigt das Rezept von dem Bild an. Bitte um Unterstützung. Danke viel Mals

Code:
ArrayList<Integer> someArrayList = new ArrayList<Integer>();

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.montag);

		bt_RezeptMon = (Button) findViewById(R.id.btRezeptMon);
		bt_Choise = (Button) findViewById(R.id.bt_choose);
		txtContent = (TextView) findViewById(R.id.editRezMon);

		img = (ImageView) findViewById(R.id.imageView1);

		someArrayList.add(R.drawable.maultaschen);
		someArrayList.add(R.drawable.sauerbraten);
		someArrayList.add(R.drawable.nudeln_thurn);
		someArrayList.add(R.drawable.italienischer_reissalat);

		// Binding Click event to Button
		bt_RezeptMon.setOnClickListener(this);
		bt_Choise.setOnClickListener(this);

	}

	@Override
	public void onClick(View v) {

          switch (v.getId()) {
		case R.id.bt_choose:
			int random = (int) (Math.random() * 4);

			for (int i = 0; i <= someArrayList.size(); i++) {
				img.setImageResource(someArrayList.get(random));

			}
			break;

		case R.drawable.italienischer_reissalat:

			if (bt_RezeptMon.equals(getResources().getDrawable(
					R.drawable.italienischer_reissalat))) {
				uriUrl = Uri
		.parse("http://www.chefkoch.de/rezepte/469601140545454/Italienischer-Reissalat.html");
				Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);
				startActivity(launchBrowser);

			}

			break;
 
Zuletzt bearbeitet von einem Moderator:
Hallo Leute,
hat denn niemand eine Idee für mein Problem?
Ich würde euch sehr dankbar sein, wenn Sie mich hier unterstützen, komme nicht mehr weiter.
Bei der btRezeptMon wenn ich denn klicke, warum wird bei jeden Bild(zufälligen)immer das gleiche Link geöffnet. Wird bspw. Maultaschen gewählt, soll der Link bzgl. der maultaschen geöffnet werden. Hier aber nicht der Fall. Egal was gewählt wird, öffnet immer das selbe.

Code:
	ArrayList<Integer> someArrayList = new ArrayList<Integer>();

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.montag);

		bt_RezeptMon = (Button) findViewById(R.id.btRezeptMon);
		bt_Choise = (Button) findViewById(R.id.bt_choose);
		txtContent = (TextView) findViewById(R.id.editRezMon);

		img = (ImageView) findViewById(R.id.imageView1);

		someArrayList.add(R.drawable.maultaschen);
		someArrayList.add(R.drawable.sauerbraten);
		someArrayList.add(R.drawable.nudeln_thurn);
		someArrayList.add(R.drawable.italienischer_reissalat);

		// Binding Click event to Button
		bt_RezeptMon.setOnClickListener(this);
		bt_Choise.setOnClickListener(this);

	}

	@Override
	public void onClick(View v) {


		switch (v.getId()) {
		case R.id.bt_choose:
             int random = (int) (Math.random() * 4);

			for (int i = 0; i < someArrayList.size(); i++) {

				img.setImageResource(someArrayList.get(random));

			}
			break;

		case R.id.btRezeptMon:

			for (int i = 0; i < someArrayList.size(); i++) {

				if (i == R.drawable.italienischer_reissalat) {

					uriUrl = Uri
							.parse("http://www.chefkoch.de/rezepte/469601140545454/Italienischer-Reissalat.html");
					Intent launchBrowser = new Intent(Intent.ACTION_VIEW,
							uriUrl);
					startActivity(launchBrowser);
				}
				if (i == R.drawable.maultaschen) {
					uriUrl = Uri
							.parse("http://www.chefkoch.de/rezepte/1673781275393729/Fraenkischer-Landfrauen-Sauerbraten.html");
					Intent launchBrowser = new Intent(Intent.ACTION_VIEW,
							uriUrl);
					startActivity(launchBrowser);
				}
 
Zuletzt bearbeitet von einem Moderator:
Mhh, ehrlich gesagt bin ich überrascht, dass deine App überhaupt irgendeinen Link öffnet.
Das Codeschnippsel sollte bei Click auf bt_RezeptMon mMn gar nix machen. Vermutlich fehlt da noch ein Stück, dass Du nicht gepostet hast.

Anyway:

Deine if Bedingung kann nie hinkommen. Deine Drawables haben eine interne Integer ID, die Android automatisch vergibt: z.B.:
R.drawable.maultaschen == 1845612
R.drawable.sauerbraten == 2248941
R.drawable.nudeln_thurn == 2543215
R.drawable.italienischer_reissalat == 17301513

In Eclipse (und ich nehmen auch an in AndroidStudio) kannst Du die Dir sogar direkt ansehen. Einfach mit der Maus über das blau hervorgehobe R.drawable.maultaschen und kurz warten bis der gelbe Info Popup kommt.
Wenn ich deine Absicht aber richtig verstanden haben, liegt der Fehler aber eigentlich daran, dass zwischen dem im bt_choose gesetzen Drawable und der For Schleife in btRezeptMon momentan kein Zusammenhang besteht.

Code:
    case R.id.btRezeptMon:
 
            for (int i = 0; i < someArrayList.size(); i++) {
  
                [COLOR=Red]// Hier vergleichst Du 0 mit z.B. 17301513, dann im nächsten Durchlauf 1 mit 17301513, dann 2 mit... bis zum Ende des Arrays[/COLOR]
                if (i == R.drawable.italienischer_reissalat) {
 
                    uriUrl = Uri
                            .parse("http://www.chefkoch.de/rezepte/469601140545454/Italienischer-Reissalat.html");
                    Intent launchBrowser = new Intent(Intent.ACTION_VIEW,
                            uriUrl);
                    startActivity(launchBrowser);
                }
              [COLOR=Red]  // Hier vergleichst Du 0 mit z.B. 1845612, dann im nächsten Durchlauf 1 mit [/COLOR][COLOR=Red][COLOR=Red]1845612[/COLOR], dann 2 mit... bis zum Ende des Arrays[/COLOR]
                if (i == R.drawable.maultaschen) {
                    uriUrl = Uri
                            .parse("http://www.chefkoch.de/rezepte/1673781275393729/Fraenkischer-Landfrauen-Sauerbraten.html");
                    Intent launchBrowser = new Intent(Intent.ACTION_VIEW,
                            uriUrl);
                    startActivity(launchBrowser);
                }
Richtig müsste sein (ungetestet):
Code:
    @Override
    public void onClick(View v) {

    switch (v.getId()) {
    
        case R.id.bt_choose:
            int random = (int) (Math.random() * 4);
    
           [COLOR=Red] //[/COLOR]for (int i = 0; i < someArrayList.size(); i++) {
                img.setImageResource(someArrayList.get(random));
               [COLOR=Red] img.setTag(someArrayList.get(random));[/COLOR]
            [COLOR=Red]//[/COLOR]}
            break;

        case R.id.btRezeptMon:

[COLOR=Red]            // keine for schleife mehr[/COLOR]
 
            if ([COLOR=Red]img.getTag()[/COLOR] == R.drawable.italienischer_reissalat) {
 
                    uriUrl = Uri
                            .parse("http://www.chefkoch.de/rezepte/469601140545454/Italienischer-Reissalat.html");
                    Intent launchBrowser = new Intent(Intent.ACTION_VIEW,
                            uriUrl);
                    startActivity(launchBrowser);
            }
            [COLOR=Red]else [/COLOR]if ([COLOR=Red]img.getTag()[/COLOR] == R.drawable.maultaschen) {
                    uriUrl = Uri
                            .parse("http://www.chefkoch.de/rezepte/1673781275393729/Fraenkischer-Landfrauen-Sauerbraten.html");
                    Intent launchBrowser = new Intent(Intent.ACTION_VIEW,
                            uriUrl);
                    startActivity(launchBrowser);
            }
          [COLOR=Red]  break;
}   [/COLOR]
Das sollte klappen. (Das else brauchst Du eigentlich nicht, gehört sich aber so und macht das Ganze schneller.)
Kann sein, dass Du das img.getTag() noch auf != null prüfen musst, weiß ich grad nich...
Dann müsstest Du sowas machen:
if(img.getTag() != null && img.getTag() == R.drawable.xyz)


Nachtrag:
Mir ist grad eben noch aufgefallen, dass deien For Schleife in bt_choose völlig überflüssig ist, die kann auch weg. Das random bestimmst Du außerhalb der Schleife und in der Schleife kommt i gar nicht vor.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: azubi
Hallo,
vielen Dank für die schnelle Antwort.
Ich habe Ihre Lösung ausprobiert, es kommt bei der if Anweisung Fehlermeldung: Incompatible operand types Object and int
Was heißt das?
Noch mal besten dank und schönen Abend
 
azubi schrieb:
Hallo,
vielen Dank für die schnelle Antwort.
Ich habe Ihre Lösung ausprobiert, es kommt bei der if Anweisung Fehlermeldung: Incompatible operand types Object and int
Was heißt das?
Noch mal besten dank und schönen Abend

Das heißt, dass man Objekte nicht mit == und einem primitiven Datentypen (hier integer) vergleichen kann.

Gnarrrr... das kommt davon, wenn man sowas vor sich hintippt ohne Gegenzuprüfen. Mein Fehler, sorry.

Wenigstens bin ich mir jetzt sicher, dass da zur Sicherheit außerdem eine !=null Abfrage mit hingehört.

Code:
if(img.getTag() != null && img.getTag().equals(R.drawable.camera_icon)){
Die anderen Ifs dann auch entsprechend anpassen. =)
 
Hallo,

Klick auf Button Rezept passiert nichts. Dieser teil soll das angezeigte Bild bspw. Sauerbraten, soll mit button klick Link öffnen. Tut aber nicht.
In dem Fall wenn "italienischer_reissalat" ausgewählt, dann soll Link zum Rezept öffnen.
Ich danke Ihnen für die Hilfe
Code:
if (img.getTag() != null
					&& img.getTag().equals(R.drawable.italienischer_reissalat)) {

				uriUrl = Uri
						.parse("http://www.chefkoch.de/rezepte/469601140545454/Italienischer-Reissalat.html");
				Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);
				startActivity(launchBrowser);

hier ist der Kode.

Code:
img = (ImageView) findViewById(R.id.imageView1);

		someArrayList.add(R.drawable.maultaschen);
		someArrayList.add(R.drawable.sauerbraten);
		someArrayList.add(R.drawable.nudeln_thurn);
		someArrayList.add(R.drawable.italienischer_reissalat);

		// Binding Click event to Button
		bt_RezeptMon.setOnClickListener(this);
		bt_Choise.setOnClickListener(this);

	}

	@Override
	public void onClick(View v) {
		
		switch (v.getId()) {
		case R.id.bt_choose:

			int random = (int) (Math.random() * 4);

			for (int i = 0; i < someArrayList.size(); i++) {

			img.setImageResource(someArrayList.get(random));
				// img.setTag(someArrayList.get(random));

			}
			break;

		case R.id.btRezeptMon:

			if (img.getTag() != null
					&& img.getTag().equals(R.drawable.italienischer_reissalat)) {

				uriUrl = Uri
						.parse("http://www.chefkoch.de/rezepte/469601140545454/Italienischer-Reissalat.html");
				Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);
				startActivity(launchBrowser);
			} else if (img.getTag() != null
					&& img.getTag().equals(R.drawable.sauerbraten)) {
				uriUrl = Uri
						.parse("http://www.chefkoch.de/rezepte/1673781275393729/Fraenkischer-Landfrauen-Sauerbraten.html");
				Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);
				startActivity(launchBrowser);
			}
			b
 
Zuletzt bearbeitet von einem Moderator:
Guuuttt, da ist das Problem mal offensichtlich.

Du hast hier
Code:
case R.id.bt_choose:
 
            int random = (int) (Math.random() * 4);
 
            for (int i = 0; i < someArrayList.size(); i++) {
 
            img.setImageResource(someArrayList.get(random));
           [COLOR=Red]     // img.setTag(someArrayList.get(random));[/COLOR]
 
            }
            break;
Das img.setTag auskommentiert. Ohne das geht das Ganze nicht. Und die Schleife kann auch weg.


Das hier funktioniert. (Und so sieht übrigens formatierter, eingerückter und vor allem lesbarer Code aus. In Eclipse mit Strg+Shift+F ;))
Code:
    @Override
    public void onClick(View v) {

        switch (v.getId()) {
        case R.id.bt_choose:

            int random = (int) (Math.random() * 4);
            img.setImageResource(someArrayList.get(random));
            img.setTag(someArrayList.get(random));
            break;

        case R.id.btRezeptMon:

            if (img.getTag() != null && img.getTag().equals(R.drawable.italienischer_reissalat)) {
                uriUrl = Uri.parse("http://www.chefkoch.de/rezepte/469601140545454/Italienischer-Reissalat.html");
                Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);
                startActivity(launchBrowser);
            } else if (img.getTag() != null && img.getTag().equals(R.drawable.sauerbraten)) {
                uriUrl = Uri
                        .parse("http://www.chefkoch.de/rezepte/1673781275393729/Fraenkischer-Landfrauen-Sauerbraten.html");
                Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);
                startActivity(launchBrowser);
            }
            break;
        }
    }


Nachtrag:
Wenn Du Nudeln oder Maultaschen anzeigst, passiert beim Rezept Button natürlich nix, da dafür ja noch die Links fehlen. Falls Du die schon hast, und nur aus Platzgründen hier im Codebeispiel nicht angegeben hast, dann ignorier das hier einfach. ;)
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: azubi
Hallo,
for schleife auskommentiert.
Code:
 img.setImageResource(someArrayList.get(random));
// img.setTag(someArrayList.get(random));
img.setTag anstelle img.setImage. 
Bilder öffnen tatsächlich. Aber Wenn ich Button "Rezept" klicke, passiert nichts. :sad:


Der ursprüngliche Beitrag von 20:34 Uhr wurde um 20:38 Uhr ergänzt:

Hallo,

jetzt hat es geklappt. Sie sie Genie. Ich konnte seit Wochen das Problem nicht lösen, keiner konnte mir helfen. Sie sind Klasse. Ich danke Ihnen 10000 Mal

schönen Abend
Grüß
Anna
 
Zuletzt bearbeitet von einem Moderator:

Ähnliche Themen

B
Antworten
3
Aufrufe
1.309
swa00
swa00
S
Antworten
17
Aufrufe
556
jogimuc
J
B
Antworten
6
Aufrufe
1.051
jogimuc
J
Zurück
Oben Unten