Я пытаюсь передать 9 строк из одного класса Java в другой класс через Bundle. Но на другом экране значение, присвоенное последней дополнительной строке, перезаписывается для всех остальных строк.
Класс 1
public class HomeScreen extends AppCompatActivity {
public static String Buy_Price;
public static String Sell_Price;
public static String QUANTITY;
public static String BROKERAGE;
public static String ActualProfitLoss_String;
public static String TurnOver_String;
public static String STT_String;
public static String ServiceTax_String;
public static String TotalCharge_String;
public static String x;
private static String Strin ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_screen);
}
public void calculateProfit(View view) {
Intent intent = new Intent(this, displayProfit.class);
Bundle extras =new Bundle();
EditText editText=(EditText) findViewById(R.id.editText);
EditText editText4=(EditText) findViewById(R.id.editText4);
EditText editText2=(EditText) findViewById(R.id.editText2);
EditText editText3=(EditText) findViewById(R.id.editText3);
String buyPriceString = editText3.getText().toString();
Float BuyPrice = Float.parseFloat(buyPriceString);
String quantityString = editText2.getText().toString();
Float Quantity = Float.parseFloat(quantityString);
String sellPriceString = editText4.getText().toString();
Float SellPrice = Float.parseFloat(sellPriceString);
String brokerageString = editText.getText().toString();
Float Brokerage = Float.parseFloat(brokerageString);
double TurnOver=(BuyPrice*Quantity)+(SellPrice*Quantity);
double Sell1 =SellPrice-(SellPrice*(Brokerage/100));
double Buy1 = BuyPrice+(BuyPrice*(Brokerage/100));
double TotalBrokerage = ((Sell1*.03)+(Buy1*0.3));
double STT = (Quantity*(SellPrice-(SellPrice*(Brokerage/100))))*(.025/100);
double TrnxChrge = TurnOver*(0.00275/100);
double ServiceTax = (TotalBrokerage+STT)*(15/100);
double SEBICharge = (TurnOver*(.0002/100));
double TotalCharge = ServiceTax+TrnxChrge+SEBICharge+STT;
double NetProfit = (Sell1-Buy1)*Quantity;
double ActualProfitLoss = (NetProfit -TotalCharge);
String ActualProfitLossString=Double.toString(ActualProfitLoss);
String TurnOverString=Double.toString(TurnOver);
String STTString=Double.toString(STT);
String ServiceTaxString=Double.toString(ServiceTax);
String TotalChargeString=Double.toString(TotalCharge);
extras.putString(ActualProfitLoss_String,ActualProfitLossString);
extras.putString(TurnOver_String,TurnOverString);
extras.putString(STT_String,STTString);
extras.putString(ServiceTax_String,ServiceTaxString);
extras.putString(TotalCharge_String,TotalChargeString);
extras.putString(Buy_Price,buyPriceString);
extras.putString(Sell_Price,sellPriceString);
extras.putString(BROKERAGE,brokerageString);
extras.putString(QUANTITY,quantityString);
intent.putExtras(extras);
startActivity(intent);
}
Класс 2:
public class displayProfit extends AppCompatActivity {
private static String Strin ;
protected void onCreate(Bundle savedInstanceState) {
Log.d(Strin, "buyPrice :::");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_profit);
Intent intent =getIntent();
Bundle extras = intent.getBundleExtra(HomeScreen.x);
String Buy_Price = extras.getString(HomeScreen.Buy_Price);
String Sell_Price = extras.getString(HomeScreen.Sell_Price);
String QUANTITY = extras.getString(HomeScreen.QUANTITY);
String BROKERAGE = extras.getString(HomeScreen.BROKERAGE);
String ActualProfitLoss_String = extras.getString(HomeScreen.ActualProfitLoss_String);
String TurnOver_String = extras.getString(HomeScreen.TurnOver_String);
String STT_String = extras.getString(HomeScreen.STT_String);
String ServiceTax_String = extras.getString(HomeScreen.ServiceTax_String);
String TotalCharge_String = extras.getString(HomeScreen.TotalCharge_String);
TextView Buy_Price1= (TextView) findViewById(R.id.Buy_Price1);
TextView Sell_Price1= (TextView) findViewById(R.id.Sell_Price1);
TextView QUANTITY1= (TextView) findViewById(R.id.QUANTITY1);
TextView BROKERAGE1= (TextView) findViewById(R.id.BROKERAGE1);
TextView ActualProfitLoss_String1= (TextView) findViewById(R.id.ActualProfitLoss_String1);
TextView TurnOver_String1= (TextView) findViewById(R.id.TurnOver_String1);
TextView STT_String1= (TextView) findViewById(R.id.STT_String1);
TextView ServiceTax_String1= (TextView) findViewById(R.id.ServiceTax_String1);
TextView TotalCharge_String1= (TextView) findViewById(R.id.TotalCharge_String1);
Buy_Price1.setText(Buy_Price);
Sell_Price1.setText(Sell_Price);
QUANTITY1.setText(QUANTITY);
BROKERAGE1.setText(BROKERAGE);
ActualProfitLoss_String1.setText(ActualProfitLoss_String);
TurnOver_String1.setText(TurnOver_String);
STT_String1.setText(STT_String);
ServiceTax_String1.setText(ServiceTax_String);
TotalCharge_String1.setText(TotalCharge_String);
}
}
В конце класса 2 я поместил журнал и обнаружил, что значение, присвоенное КОЛИЧЕСТВУ, заполняется для всей строки.
Пожалуйста, поясните вышеизложенное. Если вам нужно больше кода, он будет делиться тем же.
Журналы для того же после изменения Class1, как предложено в ответе
W/IInputConnectionWrapper: FinishComposingText для неактивного InputConnection W/IInputConnectionWrapper: FinishComposingText для неактивного InputConnection W/IInputConnectionWrapper: FinishComposingText для неактивного InputConnection I/art: фоновая липкая одновременная развертка меток GC освобождает 25273 (2 МБ) объектов AllocSpace, 15 (264 КБ) объектов LOS, 44 % свободно, 4 МБ/8 МБ, приостановлено 14,345 мс, всего 168,562 мс
[ 02-20 23:21:14.614 3314: 3314 D/ ]
цена покупки :::
[ 02-20 23:21:14.861 3314: 3314 D/ ] NotNull:::::: D/AndroidRuntime: завершение работы виртуальной машины
--------- beginning of crash
E/AndroidRuntime: НЕИСПРАВНОЕ ИСКЛЮЧЕНИЕ: основной процесс: com.test.tax, PID: 3314 java.lang.RuntimeException: невозможно запустить активность ComponentInfo{com.test.tax/com.test.tax.displayProfit}: java.lang. NullPointerException: попытка вызвать виртуальный метод «java.lang.String android.os.Bundle.getString(java.lang.String)» для ссылки на нулевой объект в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646) в android .app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) в android.app.ActivityThread.-wrap12(ActivityThread.java) в android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) в android.os.Handler .dispatchMessage(Handler.java:102) в android.os.Looper.loop(Looper.java:154) в android.app.ActivityThread.main(ActivityThread.java:6077) в java.lang.reflect.Method.invoke( Собственный метод) на com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) на com.android.interna l.os.ZygoteInit.main(ZygoteInit.java:755) Причина: java.lang.NullPointerException: попытка вызвать виртуальный метод java.lang.String android.os.Bundle.getString(java.lang.String) на ссылка на нулевой объект в com.test.tax.displayProfit.onCreate(displayProfit.java:29) в android.app.Activity.performCreate(Activity.java:6662) в android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) ) в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599) в android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) в android.app.ActivityThread.-wrap12(ActivityThread.java) в android.app. ActivityThread$H.handleMessage(ActivityThread.java:1460) на android.os.Handler.dispatchMessage(Handler.java:102) на android.os.Looper.loop(Looper.java:154) на android.app.ActivityThread.main (ActivityThread.java:6077) на java.lang.reflect.Method.invoke(собственный метод) на com.android.internal .os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) Отключено от целевой ВМ, адрес: 'localhost:8625', транспорт: 'разъем'
HomeScreen.QUANTITY
,HomeScreen.BROKERAGE
,HomeScreen.Sell_Price
и т. д. - person vader   schedule 20.02.2017public static String ActualProfitLoss_String
,public static String QUANTITY
и т. д. Добавьте эту часть кода. Все девять полейpublic static String
вHomeScreen
- person vader   schedule 20.02.2017