Skip to content

Instantly share code, notes, and snippets.

@udacityandroid
Created June 27, 2015 21:54
Show Gist options
  • Select an option

  • Save udacityandroid/dbc83e6d49dd1164d2b5 to your computer and use it in GitHub Desktop.

Select an option

Save udacityandroid/dbc83e6d49dd1164d2b5 to your computer and use it in GitHub Desktop.
Android for Beginners : Cookies Solution Code
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#B388FF"
android:orientation="vertical"
tools:context=".MainActivity">
<ImageView
android:id="@+id/android_cookie_image_view"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:scaleType="centerCrop"
android:src="@drawable/before_cookie"
android:text="@string/hello_world" />
<TextView
android:id="@+id/status_text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="16dp"
android:text="I'm so hungry"
android:textColor="@android:color/white"
android:textSize="34sp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:text="Eat cookie"
android:onClick="eatCookie" />
</LinearLayout>
package com.example.android.cookies;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
/**
* Called when the cookie should be eaten.
*/
public void eatCookie(View view) {
// Find a reference to the ImageView in the layout. Change the image.
ImageView imageView = (ImageView) findViewById(R.id.android_cookie_image_view);
imageView.setImageResource(R.drawable.after_cookie);
// Find a reference to the TextView in the layout. Change the text.
TextView textView = (TextView) findViewById(R.id.status_text_view);
textView.setText("I'm so full");
}
}
@asmaadahab

Copy link
Copy Markdown

untitled
احل الخطا دا ازاى

@ahmedmtaher

Copy link
Copy Markdown

C:\Users\Ahmed Eltaher\AndroidStudioProjects\cookies\app\src\main\res\values\strings.xml: Error: null is not a valid resource name (reserved Java keyword)

@DaNa167

DaNa167 commented Jun 20, 2018

Copy link
Copy Markdown

[
untitled

](url)

my application is crashing what is the wrong here??

@DaNa167

DaNa167 commented Jun 20, 2018

Copy link
Copy Markdown

untitled

@DaNa167

DaNa167 commented Jun 20, 2018

Copy link
Copy Markdown

untitled

@ahossam88

Copy link
Copy Markdown

What is the Activity method you call to get the TextView and ImageView objects?

@ahmedwagih1964

Copy link
Copy Markdown

Done! had to change the code provided for the Gradle - modify the version to the current version, also "compile" is now deprecated.

@varanshu-engineer

Copy link
Copy Markdown

There is a warning in the code

WARNING: Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'.

@rajatnaik12

Copy link
Copy Markdown

@Varanshu in new format they use implementation rather than compile, which was used before. You can change it to implementation and it should be. in project find the gradle.app and at the end in that file you will find the compile statements and change them to implementation. Do update your Android studio and supporting libraries like gradle and etc.

@rajatnaik12

Copy link
Copy Markdown

@meanday you are using new tools and was not supposed to not change anything in gardle files. only code in activity_main. xml and . java

@rajatnaik12

Copy link
Copy Markdown

TextView textView=new TextView(this) ;
i suggest you go through documentation when you find struck somewhere. If documentation didn't helped serch on Google or ask in forums like stackoverflow.com

@ilart1991

ilart1991 commented Aug 7, 2018

Copy link
Copy Markdown

My code for it:

    public void eatCookie(View view) {
        changePicText();
    }

    private void changePicText() {
        ImageView endOfFood = findViewById(R.id.android_cookie_image_view);
        endOfFood.setImageResource(R.drawable.after_cookie);
        TextView newText = findViewById(R.id.status_text_view);
        newText.setText("I'm so full");
    }

@aseilhamid

Copy link
Copy Markdown

It crashes with me also ... but I could fix this by copying the images to drawable folder in project files as I found them in folder called
drawable-v24 only

@treedbox

Copy link
Copy Markdown

my code:
activity_main.xml _________________

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#B388FF"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <ImageView
        android:id="@+id/android_cookie_image_view"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:scaleType="centerCrop"
        android:src="@drawable/before_cookie" />

    <TextView
        android:id="@+id/status_text_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:layout_marginTop="16dp"
        android:text="I'm so hungry"
        android:textColor="@android:color/white"
        android:textSize="34sp" />

    <Button
        android:id="@+id/eat_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="16dp"
        android:onClick="eatCookie"
        android:text="EAT COOKIE" />

</LinearLayout>

MainActivity.java _________________

package com.example.android.cookies;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;


public class MainActivity extends AppCompatActivity {

    protected boolean toEat = true;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    /**
     * Changes message on textView
     */
    private void displayMessage(String message) {
        TextView statusTextView = findViewById(R.id.status_text_view);
        statusTextView.setText(message);
    }

    /**
     * Changes button text
     */
    private void displayButtonText(String text) {
        Button eatButton = findViewById(R.id.eat_button);
        eatButton.setText(text);
    }

    /**
     * Changes image
     */
    private void displayImage(int img) {
        ImageView androidCookieImageView = findViewById(R.id.android_cookie_image_view);
        androidCookieImageView.setImageResource(img);
        androidCookieImageView.setImageResource(img);
    }

    /**
     * Called when button eat_button is pressed
     */
    public void eatCookie(View view) {
        //if toEat is true, eat like it was the last meal
        if (toEat) {
            displayImage(R.drawable.after_cookie);
            displayMessage("I'm so full"); //show some regret
            displayButtonText("Eat another Cookie!"); //suppress the regret

            toEat = false; //not to eat anymore
        } else {
            //if toEat is false, allow eat another cookie
            displayImage(R.drawable.before_cookie);
            displayMessage("Well, aways has space for some more :P"); //make a banal excuse
            displayButtonText("Eat the Cookie"); //Test your limits

            toEat = true; //to eat
        }
    }
}

@Rudien

Rudien commented Oct 27, 2018

Copy link
Copy Markdown

I succeeded !

@TejoNagesh

Copy link
Copy Markdown

ok done

@TejoNagesh

Copy link
Copy Markdown

hungry

@HeshamNatora

Copy link
Copy Markdown

image
you will notice that i didn't cast my objects view and it works.....but i don't know why it doesn't matter?!!!!

@OneGrumpyBunny

OneGrumpyBunny commented Jul 9, 2019

Copy link
Copy Markdown

I don't know about anyone else, but I had to escape the single quote in "I'm so full". Note, I used the strings.xml resource file to hold the string value. Here's my eatCookie() method

public void eatCookie(View view) {
ImageView changeImage = (ImageView) findViewById(R.id.android_cookie_image_view);
changeImage.setImageResource(R.drawable.after_cookie);

    TextView changeText = (TextView) findViewById(R.id.status_text_view);
    changeText.setText(R.string.sofull);

}

and the strings.xml file:

< resources >
< string name="app_name" >Cookies< /string >
< string name="sofull" >I \ 'm so full!< /string >
< /resources >

Also, I did not need to add anything to my gradle.build app file. There were errors when I added it, and with many things in this course, that code was obsolete for my version. (Android Studio 3.4.1). So, I skipped that step.

@thisisruslan

Copy link
Copy Markdown

well Done

@NChandra-Dev

Copy link
Copy Markdown

cookies error 1
cookies error 2

Can anybody help me? How to resolve these errors?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment