2

たとえば、私は活動1、活動2、活動3、そして最後にvalueAllActivityを持っていますか? activity1、activity2、activity3 から --> valueAllActivity にデータを渡すにはどうすればよいですか?

各アクティビティの INT 値を valueAllActivity に渡します。

私はAndroidプログラムの開発に非常に慣れていないので、誰かがガイドできれば光栄です:)ありがとう

//アクティビティ1

package lynn.calculate.KaunterKalori;

import lynn.calculate.KaunterKalori.R;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.content.Intent;

public class Breakfast extends Activity {
public static int TotalKalori;



ArrayAdapter<String> FoodType1Adapter;
ArrayAdapter<String> DrinkType1Adapter;
String FoodTypeArray[] = { "","white bread"}
int[] valueFoodTypeArray = { 0,20};
String[] DrinkTypeArray = { "","tea"};
int[] valueDrinkTypeArray = { 0,201};

Spinner FoodTypeSpinner;
Spinner DrinkTypeSpinner;
TextView SarapanTotalKalori;

public void onCreate(Bundle savedInstancesState) {
    super.onCreate(savedInstancesState);
    setContentView(R.layout.breakfast);

    FoodTypeSpinner = (Spinner) findViewById(R.id.spinner1);
    DrinkTypeSpinner = (Spinner) findViewById(R.id.spinner2);
    SarapanTotalKalori = (TextView) findViewById(R.id.JumlahKalori);

    initializeSpinnerAdapters();
    // load the default values for the spinners
    loadFoodValue1Range();
    loadDrinkValue1Range();

}

// nk handle button --> refer calculate button
public void calculateClickHandler(View view) {
    if (view.getId() == R.id.button1) {

        // nk bace dkat spinner
        int food1 = getSelectedFood();
        int drink1 = getSelectedDrink();

        // kira kalori sarapan
        // view kalori sarapan

        int totalKalori1 = calculateSarapan(food1, drink1);
        SarapanTotalKalori.setText(totalKalori1 + "");

        //setttlBreakfast(totalKalori1);
        Intent b= new Intent(Breakfast.this, Lunch.class);
        b.putExtra("totalBreakfast",totalKalori1);
        Breakfast.this.startActivity(b);


        }
    }


public int getSelectedFood() {
    String selectedFoodValue = (String) FoodTypeSpinner.getSelectedItem();
    int index = 0;

    for (int i = 0; i < FoodTypeArray.length; i++) {
        if (selectedFoodValue.equals(FoodTypeArray[i])) {
            index = i;
            break;
        }
    }
    return valueFoodTypeArray[index];
}

public int getSelectedDrink() {
    String selectedDrinkValue = (String) DrinkTypeSpinner.getSelectedItem();
    int index = 0;
    for (int i = 0; i < DrinkTypeArray.length; i++) {
        if (selectedDrinkValue.equals(DrinkTypeArray[i])) {
            index = i;
            break;
        }
    }
    return valueDrinkTypeArray[index];

}

public int calculateSarapan(int food1, int drink1) {
    return (int) (food1 + drink1);
}

public void loadFoodValue1Range() {
    FoodTypeSpinner.setAdapter(FoodType1Adapter);
    // set makanan b4 pilih
    FoodTypeSpinner.setSelection(FoodType1Adapter.getPosition("400"));

}

public void loadDrinkValue1Range() {
    DrinkTypeSpinner.setAdapter(DrinkType1Adapter);
    DrinkTypeSpinner.setSelection(DrinkType1Adapter.getPosition("77"));
}

public void initializeSpinnerAdapters() {

    FoodType1Adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, FoodTypeArray);

    DrinkType1Adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, DrinkTypeArray);

}
}

//アクティビティ 2

package lynn.calculate.KaunterKalori;

import lynn.calculate.KaunterKalori.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;

public class Lunch extends Activity {
public static int TotalKalori;
private int totalKalori1;
/* private int ttlLunch;

public void setttlLunch(int ttlLunch){
    this.ttlLunch=ttlLunch;
}
public int getttlLunch(){
    return ttlLunch;
} */

ArrayAdapter<String> FoodType2Adapter;
ArrayAdapter<String> DrinkType2Adapter;
ArrayAdapter<String> LaukType2Adapter;

String FoodType2Array[] = { "","Burger"};
int[] valueFoodType2Array = { 0, 150 };
String DrinkType2Array[] = { "","Pepsi" };
int[] valueDrinkType2Array = { 0,100 };
String LaukType2Array[] = { "","Wings" };
int[] valueLaukType2Array = { 0,200 };

Spinner FoodType2Spinner;
Spinner DrinkType2Spinner;
Spinner LaukType2Spinner;
TextView LunchTotalKalori;

protected void onCreate(Bundle savedInstancesState) {
    super.onCreate(savedInstancesState);
    setContentView(R.layout.lunch);

    FoodType2Spinner = (Spinner) findViewById(R.id.spinner1);
    LaukType2Spinner = (Spinner) findViewById(R.id.spinner2);
    DrinkType2Spinner = (Spinner) findViewById(R.id.spinner3);
    LunchTotalKalori = (TextView) findViewById(R.id.JumlahKalori);

    initializeSpinnerAdapters();

    loadFoodValue2Range();
    loadDrinkValue2Range();
    loadLaukValue2Range();

}

public void calculateClickHandler(View view) {
    if (view.getId() == R.id.button1) {

        int food2 = getSelectedFood2();
        int drink2 = getSelectedDrink2();
        int lauk2 = getSelectedLauk2();


        int totalKalori2 = calculateLunch(food2, drink2, lauk2);
        LunchTotalKalori.setText(totalKalori2 + "");
        Bundle extras = getIntent().getExtras();
        if (extras != null){
            totalKalori1 = extras.getInt("totalBreakfast");
            totalKalori2 = extras.getInt("totalLunch");
        }
        //setttlLunch(totalKalori2);

        Intent n= new Intent(Lunch.this, Dinner.class);
        n.putExtra("totalBreakfast", totalKalori1);
        n.putExtra("totalLunch", totalKalori2);
        Lunch.this.startActivity(n);




    }
}

public int getSelectedFood2() {
    String selectedFoodValue2 = (String) FoodType2Spinner.getSelectedItem();
    int index = 0;

    for (int i = 0; i < FoodType2Array.length; i++) {
        if (selectedFoodValue2.equals(FoodType2Array[i])) {
            index = i;
            break;
        }
    }

    return valueFoodType2Array[index];

}

public int getSelectedDrink2() {
    String selectedDrinkValue2 = (String) DrinkType2Spinner
            .getSelectedItem();
    int index = 0;

    for (int i = 0; i < DrinkType2Array.length; i++) {
        if (selectedDrinkValue2.equals(DrinkType2Array[i])) {

            index = i;
            break;
        }
    }

    return valueDrinkType2Array[index];
}

public int getSelectedLauk2() {
    String selectedLaukValue2 = (String) LaukType2Spinner.getSelectedItem();
    int index = 0;

    for (int i = 0; i < LaukType2Array.length; i++) {
        if (selectedLaukValue2.equals(LaukType2Array[i])) {

            index = i;
            break;
        }
    }

    return valueLaukType2Array[index];
}

public int calculateLunch(double food2, double drink2, double lauk2) {
    return (int) (food2 + drink2 + lauk2);
}


public void loadFoodValue2Range(){
    FoodType2Spinner.setAdapter(FoodType2Adapter);
    FoodType2Spinner.setSelection(FoodType2Adapter.getPosition("200"));
}

public void loadDrinkValue2Range(){
    DrinkType2Spinner.setAdapter(DrinkType2Adapter);
    DrinkType2Spinner.setSelection(DrinkType2Adapter.getPosition("77"));
}

public void loadLaukValue2Range(){
    LaukType2Spinner.setAdapter(LaukType2Adapter);
    LaukType2Spinner.setSelection(LaukType2Adapter.getPosition("2"));
}

public void initializeSpinnerAdapters(){

    FoodType2Adapter = new ArrayAdapter<String>(this, 
            android.R.layout.simple_spinner_item, FoodType2Array);

    DrinkType2Adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, DrinkType2Array);

    LaukType2Adapter = new ArrayAdapter<String>(this, 
            android.R.layout.simple_spinner_item, LaukType2Array);
}

}

//アクティビティ 3

package lynn.calculate.KaunterKalori;

import lynn.calculate.KaunterKalori.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;

public class Dinner extends Activity {
public static int TotalKalori;
private int totalKalori1;
private int totalKalori2;
/*private int ttlDinner;

public void setttlDinner(int ttlDinner){
    this.ttlDinner=ttlDinner;
}
public int getttlDinner(){
    return ttlDinner;
} */

ArrayAdapter<String> FoodType3Adapter;
ArrayAdapter<String> ProteinType3Adapter;
ArrayAdapter<String> DrinkType3Adapter;

String FoodType3Array[] = { "","chicken chop" };
int[] valueFoodType3Array = { 0, 204};
String ProteinType3Array[] = { "","chicken breast",  };
int[] valueProteinType3Array = { 0, 40 };
String DrinkType3Array[] = { "","mineral water" };
int[] valueDrinkType3Array = { 0, 0};

Spinner FoodType3Spinner;
Spinner ProteinType3Spinner;
Spinner DrinkType3Spinner;
TextView DinnerTotalKalori;

protected void onCreate(Bundle savedInstancesState) {
    super.onCreate(savedInstancesState);
    setContentView(R.layout.dinner);

    FoodType3Spinner = (Spinner) findViewById(R.id.spinner1);
    ProteinType3Spinner = (Spinner) findViewById(R.id.spinner2);
    DrinkType3Spinner = (Spinner) findViewById(R.id.spinner3);
    DinnerTotalKalori = (TextView) findViewById(R.id.JumlahKalori);

    initializeSpinnerAdapters();

    loadFoodValue3Range();
    loadProteinValue3Range();
    loadDrinkValue3Range();

}

public void calculateClickHandler(View view) {
    if (view.getId() == R.id.button1) {

        int food3 = getSelectedFood3();
        int protein3 = getSelectedProtein3();
        int drink3 = getSelectedDrink3();

        int totalKalori3 = calculateDinner(food3, protein3, drink3);
        DinnerTotalKalori.setText(totalKalori3 + "");
        Bundle extras = getIntent().getExtras();
        if (extras != null){
            totalKalori1 = extras.getInt("totalBreakfast");
            totalKalori2 = extras.getInt("totalLunch");
            totalKalori3 = extras.getInt("totalDinner");
        }
        //setttlDinner(totalKalori3);
        Intent d= new Intent(Dinner.this, CalculateAll.class);
        d.putExtra("totalBreakfast", totalKalori1);
        d.putExtra("totalLunch", totalKalori2);
        d.putExtra("totalDinner", totalKalori3);
        startActivity(d);



    }

}

public int getSelectedFood3() {
    String selectedFoodValue3 = (String) FoodType3Spinner.getSelectedItem();

    int index = 0;

    for (int i = 0; i < FoodType3Array.length; i++) {
        if (selectedFoodValue3.equals(FoodType3Array[i])) {

        index = i;
        break;

        }

    }

    return valueFoodType3Array[index];

}

public int getSelectedProtein3() {
    String selectedProteinValue3 = (String) ProteinType3Spinner
            .getSelectedItem();
    int index = 0;

    for (int i = 0; i < ProteinType3Array.length; i++) {
        if (selectedProteinValue3.equals(ProteinType3Array[i])) {

            index = i;
            break;
        }
    }

    return valueProteinType3Array[index];
}

public int getSelectedDrink3() {
    String selectedDrinkValue3 = (String) DrinkType3Spinner
            .getSelectedItem();

    int index = 0;

    for (int i = 0; i < DrinkType3Array.length; i++) {
        if (selectedDrinkValue3.equals(DrinkType3Array[i])) {
            index = i;
            break;
        }
    }

    return valueDrinkType3Array[index];
}

public int calculateDinner(int food3, int protein3, int drink3) {
    return (int) (food3 + protein3 + drink3);
}

public void loadFoodValue3Range() {
    FoodType3Spinner.setAdapter(FoodType3Adapter);
    FoodType3Spinner.setSelection(FoodType3Adapter.getPosition("10"));
}

public void loadProteinValue3Range() {
    ProteinType3Spinner.setAdapter(ProteinType3Adapter);
    ProteinType3Spinner.setSelection(ProteinType3Adapter.getPosition("99"));
}
public void loadDrinkValue3Range(){
    DrinkType3Spinner.setAdapter(DrinkType3Adapter);
    DrinkType3Spinner.setSelection(DrinkType3Adapter.getPosition("10"));
}

public void initializeSpinnerAdapters(){

    FoodType3Adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, FoodType3Array);

    ProteinType3Adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, ProteinType3Array);

    DrinkType3Adapter = new ArrayAdapter<String>(this,     android.R.layout.simple_spinner_item, DrinkType3Array);



}

}

// CalulateAllActivity - すべての値を合計したい場所 (int)

package lynn.calculate.KaunterKalori;

import lynn.calculate.KaunterKalori.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;

public class CalculateAll extends Activity {

public static int TotalKalori;
private int totalKalori1;
private int totalKalori2;
private int totalKalori3;



ArrayAdapter<String> SexTypeAdapter;
String SexTypeArray[] = { "Lelaki", "Perempuan" };

Spinner SexTypeSpinner;
TextView TotalKaloriSehari;
TextView totalsarapan;


    public CalculateAll() {

}

@Override
public void onCreate(Bundle savedInstancesState) {
    super.onCreate(savedInstancesState);
    setContentView(R.layout.calculate_all);

    SexTypeSpinner = (Spinner) findViewById(R.id.spinnerSex);
    TotalKaloriSehari = (TextView) findViewById(R.id.JumlahKalori);



}

public void calculateClickHandler(View view) {
    if (view.getId() == R.id.buttonKiraAll) {
    //  public final int TotalKalori;

        Bundle extras = getIntent().getExtras();
        if (extras != null){
            totalKalori1 = extras.getInt("totalBreakfast");
            totalKalori2 = extras.getInt("totalLunch");
            totalKalori3 = extras.getInt("totalDinner");
        }
        //setttlLunch(totalKalori2);

        Intent n= new Intent(this, CalculateAll.class);
        n.putExtra("totalBreakfast", totalKalori1);
        n.putExtra("totalLunch", totalKalori2);
        n.putExtra("totalDinner", totalKalori3);
        startActivity(n);


        int TotalKalori = calculateTotalKalori(totalKalori1, totalKalori2, totalKalori3);
        TotalKaloriSehari.setText(TotalKalori+ "");

        // int ttlCAl =getttlBreakfast()+getttlLunch()+getttlDinner();
        //String finalString = Integer.toString(calcAll());
        //TextView tv1 = (TextView) findViewById(R.id.JumlahKalori);
        //tv1.setText(finalString);


    }

}

 public int calculateTotalKalori(int totalKalori1, int totalKalori2,
int totalKalori3) {
 return (int) (totalKalori1 + totalKalori2 + totalKalori3);

}


}

私を助けようとする人に感謝します。とても感謝しています:)ご存知のように、私はプログラムを開発する初期段階にあるので、どうもありがとうございました:)

4

6 に答える 6

5

インテントを介してそれを行います。data1 と data 2 が文字列で、data3 が int であるとします。

最初のアクティビティで、次のアクティビティを呼び出すインテントを設定した場合:

Intent myIntent = new Intent(Activity1.this, Activity2.class);
myIntent.putExtra("Data1", data1);
myIntent.putExtra("Data2", data2);
myIntent.putExtra("Data3", data3);
Activity1.this.startActivity(myIntent);

次に、アクティビティ 2 で:

Private String data1;
Private String data2;
Private int data3;

Bundle extras = getIntent().getExtras();
if (extras != null) {
    data1 = extras.getString("Data1");
    data2 = extras.getString("Data2");
    data3 = extras.getInt("Data3");
}
// other code
Intent myIntent = new Intent(Activity2.this, Activity3.class);
myIntent.putExtra("Data1", data1);
myIntent.putExtra("Data2", data2);
myIntent.putExtra("Data3", data3);
Activity2.this.startActivity(myIntent);

など、好きなだけ多くの活動を通して。

任意の識別子を使用できます。上記では、Data1、Data2、Data3 を使用しました。Make、Model、および TopSpeed と呼ばれることもあります。データを取得するために使用するのと同じ ID を使用する限り、問題ありません。

編集

見えてくるものがいくつか...

まず、 を使用しgetExtraて、各アクティビティの onCreate メソッドでバンドルからデータを取得します。次のアクティビティを呼び出すインテントを必要な場所に配置します。

次に、問題の 1 つがアクティビティ 2 にあります。

    if (extras != null){ 
        totalKalori1 = extras.getInt("totalBreakfast"); 
        totalKalori2 = extras.getInt("totalLunch"); 
    } 

まだバンドルに入っていないtotalLunchので、まだ試してはいけませgetん。その行を削除します。

アクティビティ 3 の同じこと:

    if (extras != null){    
        totalKalori1 = extras.getInt("totalBreakfast");    
        totalKalori2 = extras.getInt("totalLunch");    
        totalKalori3 = extras.getInt("totalDinner");    
    }    

まだバンドルに入っていないtotalDinnerので、まだ試してはいけませgetん。その行を削除します。

次にCalculate All、不要なインテントを設定してアクティビティを再起動します...これは、無限ループになるように見えます:

    Intent n= new Intent(this, CalculateAll.class);         
    n.putExtra("totalBreakfast", totalKalori1);         
    n.putExtra("totalLunch", totalKalori2);         
    n.putExtra("totalDinner", totalKalori3);         
    startActivity(n); 

「CalculateAll」アクティビティからこのセクション全体を削除します。

部品を移動しgetExtraて不良データを削除すると、問題が解決すると思います。

于 2012-05-20T14:55:11.543 に答える
4

いくつかのオプションがあります:

  1. アクティビティ間を移動するときにインテントを使用してデータを渡します。
  2. クラスを拡張して作成したグローバルアプリケーション状態 Bean を使用します。これは、メソッドApplicationを呼び出してアクティビティでアクセスできます。getApplication()
  3. 共有データがユーザーによって提供されるものである場合は、 SharedPreferences APIを使用します。
  4. アプリケーションをシャットダウンして再起動した場合でもデータを利用できるようにする場合は、データをSQLiteデータベースに永続化し、各アクティビティで取得します。

アプリケーションでデータを保存および取得できるすべての方法については、ドキュメントを参照してください。

于 2012-05-20T14:52:22.460 に答える
2

いくつかの可能性があります。

私がもっと好きなのは、アプリケーションコンテキストを使用することです...

次のような新しいクラスを作成します。

public class DataApp extends Application{

    private int myInt;
    private MyCustomObject myObj;


    public int getMyInt()               {   return myInt;           }
    public void setMyInt(int i)     {   this.myInt = i; }
    public MyCustomObject getMyObj()                {   return myObj;       }
    public void setMyObj(MyCustomObject ob)     {   this.myObj = ob;}

}

これをマニフェストに追加します。

<application
        android:name=".DataApp"
...>
...

    </application>

その後、データを渡す必要がある場合は、アクティビティでこれを行うことができます。

DataApp dataInfo = (DataApp)getApplicationContext();

//set some data:

dataInfo.setMyObj(/*put the object*/);

他のアクティビティでは、次のようなオブジェクトを取得します。

DataApp dataInfo = (DataApp)getApplicationContext();
MyCustomObject obj = dataInfo.getMyObj();

このオプションを使用すると、必要なすべてのオブジェクトタイプを渡すことができます。

于 2012-05-20T15:03:04.787 に答える
0

インテントを使用して合格するには、次のようにします。

private String fUserName;

private String fPassword;

private Boolean fUseProxy;

private String fProxyAddress;

private Integer fProxyPort;

/** Called when the activity is first created. */

@Override   public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.dashboard_activity);
        fProjectsButton = (Button) findViewById(R.id.dashProjectsButton);

         fUserName = "something";
         fPassword = "xxx";
         fUseProxy = false;
         fProxyAddress = "";
         fProxyPort = 80;

       fProjectsButton.setOnClickListener(new OnClickListener() {
                    public void onClick(View v) {

           Intent i = new Intent(CodeBaseClientDashBoardActivity.this, CodeBaseClientProjectsActivity.class);

           i.putExtra(CodeBaseClientSettingsActivity.PREFERENCE_API_USERNAME, fUserName);
           i.putExtra(CodeBaseClientSettingsActivity.PREFERENCE_PASSWORD, fPassword);
           i.putExtra(CodeBaseClientSettingsActivity.PREFERENCE_USE_PROXY, fUseProxy);
           i.putExtra(CodeBaseClientSettingsActivity.PREFERENCE_PROXY_ADDRESS, fProxyAddress);
           i.putExtra(CodeBaseClientSettingsActivity.PREFERENCE_PROXY_PORT, fProxyPort);

           startActivity(i);
        }
});
}
于 2012-05-20T14:52:09.947 に答える
0

あるアクティビティから別のアクティビティにデータを渡すための推奨される方法は、インテントを使用することです。

このチュートリアルをご覧ください。

于 2012-05-20T14:48:41.990 に答える
0

アクティビティ内のメソッドを使用して、別のアクティビティを呼び出しました。2 つの変数 (再開とプレイヤー数) でゲームを開始します。

private void MethodToCallAnotherActivity(int resume, int players) {     
    Intent intent = new Intent(CurrentActivity.this, NextActivity.class);
    intent.putExtra(NextActivity.RESUME, resume);
    intent.putExtra(NextActivity.PLAYERS, players);
    startActivity(intent);
}

NextActivity の「onCreate」で、使用した

int resume = getIntent().getIntExtra(Game.RESUME, 1);

私が欲しかった変数を読むために。

幸運を!

于 2012-05-20T16:01:55.083 に答える