0

I am a beginner and i want to make a clicker game with an orange for android, but i get a null reference exception error, i search how to fix but still not working. This is my first question.

Here is my MainActivity.cs Code

[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
public class MainActivity : AppCompatActivity
{
    private AutoOrange AutoOrangeScript;

    public int oranges = 0;
    int OPC = 1;
    int upgradecost = 10;
    int blendercost = 50;
    public TextView orangestxt;
    TextView opctext;
    TextView opstext;
    ImageButton orangebtn;
    Button buyupgrade;
    Button buyblender;

    Timer Timerr;


    protected override void OnCreate(Bundle savedInstanceState)
    {




        base.OnCreate(savedInstanceState);
        Xamarin.Essentials.Platform.Init(this, savedInstanceState);
        SetContentView(Resource.Layout.activity_main);

        orangestxt = FindViewById<TextView>(OrangeClicker.Resource.Id.orangetext);
        opctext = FindViewById<TextView>(OrangeClicker.Resource.Id.opctxt);
        opstext = FindViewById<TextView>(OrangeClicker.Resource.Id.opstxt);
        orangebtn = FindViewById<ImageButton>(OrangeClicker.Resource.Id.orangebtn);
        buyupgrade = FindViewById<Button>(OrangeClicker.Resource.Id.buyupgrade);
        buyblender = FindViewById<Button>(OrangeClicker.Resource.Id.buyblender);

        orangebtn.Click += Orange_Click;
        buyupgrade.Click += BuyUpgrade_Click;
        buyblender.Click += BuyBlender_Click;

        AutoOrangeScript.AutoOrangeTimer.Interval = 1000;
        AutoOrangeScript.AutoOrangeTimer.Elapsed += new ElapsedEventHandler(AutoOrangeScript.AutoOrangeTimer_Tick);

        Timerr.Elapsed += new ElapsedEventHandler(Timer_Tick);
        Timerr.Interval = 100;
        Timerr.Enabled = true;

        buyupgrade.Text = "Upgrade Orange  -  " + upgradecost + " Oranges       +1 Per Click";
        buyblender.Text = "Buy Blender  -  " + blendercost + " Oranges          +1 Per Second";
        opctext.Text = "Oranges per click: " + OPC;
        opstext.Text = "Oranges per click: " + AutoOrangeScript.OPS;


    }




    void Orange_Click(object sender, System.EventArgs e)
    {

        oranges += OPC;
        orangestxt.Text = oranges + "  Oranges";
    }

    void Timer_Tick(object source, ElapsedEventArgs e)
    {        
        orangestxt.Text = oranges + "  Oranges";
        buyupgrade.Text = "Upgrade Orange  -  " + upgradecost + " Oranges       +1 Per Click";
        buyblender.Text = "Buy Blender  -  " + blendercost + " Oranges          +1 Per Second";
        opctext.Text = "Oranges per click: " + OPC;
        opstext.Text = "Oranges per click: " + AutoOrangeScript.OPS;
    }

    void BuyUpgrade_Click(object sender, System.EventArgs e)
    {
        if (oranges >= upgradecost)
        {
            oranges -= upgradecost;

            if (OPC > 10)
            {
                upgradecost += 20;
            } else {
                upgradecost += 10;
            }
            OPC += 1;

            opctext.Text = "Oranges per click: " + OPC;
            buyupgrade.Text = "Upgrade Orange  -  " + upgradecost + " Oranges       +1 Per Click";
        }          
    }

    void BuyBlender_Click(object sender, System.EventArgs e)
    {
        if (oranges >= blendercost)
        {
            oranges -= blendercost;
            AutoOrangeScript.OPS += 1;
            AutoOrangeScript.AutoOrangeTimer.Enabled = true;

            if (AutoOrangeScript.OPS > 10)
            {
                upgradecost += 20;
            } else
            {
                upgradecost += 10;
            }

            opstext.Text = "Oranges per second: " + AutoOrangeScript.OPS;
            buyblender.Text = "Upgrade Blender  -  " + blendercost + " Oranges          +1 Per Second";
        }
    }

}

Here is my second code (AutoOrange.cs)

using System.Timers;

namespace OrangeClicker
{
    public class AutoOrange
    {
        private MainActivity MainActivityScript;

        public Timer AutoOrangeTimer;
        public int OPS;

        public void AutoOrangeTimer_Tick(object sender, System.EventArgs e)
        {

            MainActivityScript.oranges += OPS;
            MainActivityScript.orangestxt.Text = MainActivityScript.oranges + "Oranges";

        }

    }
}

And here i get the error

AutoOrangeScript.AutoOrangeTimer.Interval = 1000; AutoOrangeScript.AutoOrangeTimer.Elapsed += new ElapsedEventHandler(AutoOrangeScript.AutoOrangeTimer_Tick);

        Timerr.Elapsed += new ElapsedEventHandler(Timer_Tick);
        Timerr.Interval = 100;
        Timerr.Enabled = true;
Xai
  • 3
  • 1

1 Answers1

0

You subscribe to Timerr whose value is null so it is a null reference exception. Create the Timer before that.

Ivan Ičin
  • 9,672
  • 5
  • 36
  • 57