2015-01-28 4 views
-1

Я хочу вызвать метод из onCreate, но я продолжаю получать ошибку в моем logCat. Я просматривал некоторые другие ответы, и никто из них не ответил на мой вопрос. Я очень новой для андроид, так что я не знаю много ВОТ XML:вызов метода из onCreate

<?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> 

Вот код.

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); 

    } 
} 

Я прокомментировал строку, с которой я пытаюсь вызвать метод. Я знаю, что мне нужно передать аргумент VIEW, но я не знаю, как это сделать. Я пробовал View v, this.view, и если я не сделал это неправильно, я не знаю, что я делаю неправильно. Если бы кто-нибудь мог мне помочь, это было бы здорово. Я также опубликую 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 
+0

Когда вы хотите 'calculatePrices' называться? – iRuth

+0

Я хочу, чтобы он был вызван, как только будет создано действие. Мне нужно установить значения для макета Textviews. Это в коде. Я добавил комментарий, показывающий, где Он находится. я делаю это не в том месте? –

+0

Хорошо. Измените свою подпись метода из 'calculatePrices (View v)' to 'calculatePrices()'. Это должно решить проблему. – iRuth

ответ

1

Вам удалось назвать это, так как авария была внутри этого метода.

очистить ваш проект, проверьте, нет ошибок в любых файлах XML поэтому R класса может быть успешно выработанными и затем запустить проект. Проблема заключается в ресурсах TextView.

Редактировать: вы пытаетесь установить int в TextView, и вы просто не можете. Используйте String.valueOf в каждой из строк, которые вы устанавливаете значения.

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

ИЛИ

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

Я сделал это. это потому, что я пытаюсь установить значение TextView? когда я делаю setText()? Я уже очистил проект/и в моем XML-файле нет ошибок. –

+0

Я заметил только сейчас, вы не можете установить целое число в TextView. Проверьте мое редактирование. – mobilepotato7

+0

'TextView.setText (int)' интерпретирует параметр int как строковый ресурс, такой как 'R.string.whatever'. Вот почему вам нужно сначала создать строку из вашего целого. – Karakuri

Смежные вопросы