Search code examples
javaandroidoncreate

calling a method from the onCreate


I am wanting to call a method from onCreate, but I keep getting an error in my logCat. I was looking through some of the other answers and none of them answer my question specifically. I am very new to android so i dont know much HERE IS THE XML:

<?xml version="1.0" encoding="utf-8"?><AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/AbsoluteLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/usd_tot"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="116dp"
        android:layout_y="120dp"
        android:text="Total USD"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
        android:id="@+id/cad_tot"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="116dp"
        android:layout_y="192dp"
        android:text="Total CAD"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
        android:id="@+id/aud_tot"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="116dp"
        android:layout_y="258dp"
        android:text="Total AUD"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
        android:id="@+id/eur_tot"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="116dp"
        android:layout_y="328dp"
        android:text="Total EUR"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
        android:id="@+id/gbp_tot"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="116dp"
        android:layout_y="408dp"
        android:text="Total GBP"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
        android:id="@+id/textView7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="32dp"
        android:layout_y="34dp"
        android:text="Start Date"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="82dp"
        android:layout_y="0dp"
        android:text="Claim Expenses"
        android:textAppearance="?android:attr/textAppearanceLarge" />



    <TextView
        android:id="@+id/textView8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="219dp"
        android:layout_y="39dp"
        android:text="End Date"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
        android:id="@+id/tot_usd"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="118dp"
        android:layout_y="150dp"
        android:text="TextView" />

    <TextView
        android:id="@+id/tot_cad"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="118dp"
        android:layout_y="224dp"
        android:text="TextView" />

    <TextView
        android:id="@+id/tot_aud"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="118dp"
        android:layout_y="294dp"
        android:text="TextView" />

    <TextView
        android:id="@+id/tot_eur"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="118dp"
        android:layout_y="370dp"
        android:text="TextView" />

    <TextView
        android:id="@+id/tot_gbp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="118dp"
        android:layout_y="435dp"
        android:text="TextView" />

    <TextView
        android:id="@+id/sdate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="33dp"
        android:layout_y="62dp"
        android:text="TextView" />

    <TextView
        android:id="@+id/edate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="218dp"
        android:layout_y="65dp"
        android:text="TextView" />

</AbsoluteLayout>

Here is the code.

package app.zioueche_travelexpense;

import java.util.ArrayList;
import java.util.Collection;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class GetDetails extends Activity {
    static int usd = 0;
    static int cad = 0;
    static int aud = 0;
    static int gbp = 0;
    static int eur = 0;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.detail_view);
        calculatePrices(); //I WANT TO CALL THIS> DONT KNOW HOW.
    }

    public ArrayList<Expense> getExpenses(View v){
        int finalPosition = getIntent().getIntExtra("claim_position",0);
        Toast.makeText(this, finalPosition+"",Toast.LENGTH_SHORT).show();
        ClaimListController ct = new ClaimListController();
        Collection<Claim> cl = ClaimListController.getClaimList().getClaim();
        ArrayList<Claim> clist = new ArrayList<Claim>(cl);
        Claim claim = clist.get(finalPosition);
        ArrayList<Expense> elist = claim.getExpenses();
        return elist;
    }

    public void calculatePrices(View v){
        ArrayList<Expense> list = getExpenses(v);
        for (int i = 0; i < list.size(); i++){
            Expense e = list.get(i);
            if (e.getCurrency().equals("USD") ){
                GetDetails.usd += e.getPrice(); 
            }
            if (e.getCurrency().equals("CAD")){
                GetDetails.cad += e.getPrice();
            }
            if (e.getCurrency().equals("AUD")){
                GetDetails.aud += e.getPrice();
            }
            if (e.getCurrency().equals("EUR")){
                GetDetails.eur += e.getPrice();
            }
            if (e.getCurrency().equals("GBP")){
                GetDetails.gbp += e.getPrice();
            }
        }

        TextView usds = (TextView) findViewById(R.id.tot_usd);
        usds.setText(this.usd);
        TextView cads = (TextView) findViewById(R.id.tot_cad);
        cads.setText(this.cad);
        TextView auds = (TextView) findViewById(R.id.tot_aud);
        auds.setText(this.aud);
        TextView eurs = (TextView) findViewById(R.id.tot_eur);
        eurs.setText(this.eur);
        TextView gbps = (TextView) findViewById(R.id.tot_gbp);
        gbps.setText(this.gbp);

    }
}

I commented the line I am trying to call the method from. I know I need to pass it a VIEW argument, but I do not know how. I tried View v, this.view, and unless i did it wrong, i do not know what I am doing wrong. If anyone could help me it would be awesome. I will also post the logcat.

01-27 18:00:32.021: E/AndroidRuntime(14399): FATAL EXCEPTION: main
01-27 18:00:32.021: E/AndroidRuntime(14399): Process: app.zioueche_travelexpense, PID: 14399
01-27 18:00:32.021: E/AndroidRuntime(14399): java.lang.RuntimeException: Unable to start activity ComponentInfo{app.zioueche_travelexpense/app.zioueche_travelexpense.GetDetails}: android.content.res.Resources$NotFoundException: String resource ID #0x0
01-27 18:00:32.021: E/AndroidRuntime(14399):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2412)
01-27 18:00:32.021: E/AndroidRuntime(14399):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2470)
01-27 18:00:32.021: E/AndroidRuntime(14399):    at android.app.ActivityThread.access$900(ActivityThread.java:174)
01-27 18:00:32.021: E/AndroidRuntime(14399):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1307)
01-27 18:00:32.021: E/AndroidRuntime(14399):    at android.os.Handler.dispatchMessage(Handler.java:102)
01-27 18:00:32.021: E/AndroidRuntime(14399):    at android.os.Looper.loop(Looper.java:146)
01-27 18:00:32.021: E/AndroidRuntime(14399):    at android.app.ActivityThread.main(ActivityThread.java:5593)
01-27 18:00:32.021: E/AndroidRuntime(14399):    at java.lang.reflect.Method.invokeNative(Native Method)
01-27 18:00:32.021: E/AndroidRuntime(14399):    at java.lang.reflect.Method.invoke(Method.java:515)
01-27 18:00:32.021: E/AndroidRuntime(14399):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
01-27 18:00:32.021: E/AndroidRuntime(14399):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
01-27 18:00:32.021: E/AndroidRuntime(14399):    at dalvik.system.NativeStart.main(Native Method)
01-27 18:00:32.021: E/AndroidRuntime(14399): Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x0
01-27 18:00:32.021: E/AndroidRuntime(14399):    at android.content.res.Resources.getText(Resources.java:1431)
01-27 18:00:32.021: E/AndroidRuntime(14399):    at android.widget.TextView.setText(TextView.java:4954)
01-27 18:00:32.021: E/AndroidRuntime(14399):    at app.zioueche_travelexpense.GetDetails.calculatePrices(GetDetails.java:58)
01-27 18:00:32.021: E/AndroidRuntime(14399):    at app.zioueche_travelexpense.GetDetails.onCreate(GetDetails.java:22)
01-27 18:00:32.021: E/AndroidRuntime(14399):    at android.app.Activity.performCreate(Activity.java:5458)
01-27 18:00:32.021: E/AndroidRuntime(14399):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
01-27 18:00:32.021: E/AndroidRuntime(14399):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2376)
01-27 18:00:32.021: E/AndroidRuntime(14399):    ... 11 more

Solution

  • You managed to call it since the crash was inside that method.

    Clean up your project, check if there are no errors in any XML files so the R class can be successfully generated and then run the project. The problem is in the TextView resources.

    Edit: you are trying to set a int to a TextView, and you just can't. Use String.valueOf in each of the lines you are setting the values.

    usds.setText(String.valueOf(this.usd));
    

    OR

    usds.setText("" + this.usd);