大佬教程收集整理的这篇文章主要介绍了如何通过 Intent 移动到下一个活动,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试制作一个银行应用程序并且我正在尝试制作一个成功活动,当我尝试从 MainActivity.java 移动到 successActivity.java 时,我得到了一个空白页面。
这是我的 MainActivity.java:
package com.example.bankapp.ui;
import androID.content.Intent;
import androID.os.bundle;
import androID.vIEw.VIEw;
import androID.Widget.EditText;
import androID.Widget.RadioGroup;
import androID.Widget.Toast;
import androIDx.Annotation.Nullable;
import androIDx.appcompat.app.AppCompatActivity;
import com.example.bankapp.R;
import com.example.bankapp.data.AccountRepository;
import com.example.bankapp.databinding.ActivitymainBinding;
import com.example.bankapp.domain.bankAccount;
import com.example.bankapp.domain.successpayment;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.UUID;
public class MainActivity extends AppCompatActivity {
private ActivitymainBinding binding;
private BankAccount bankAccount;
@OverrIDe
protected voID onCreate(@Nullable Bundle savedInstanceStatE) {
super.onCreate(savedInstanceStatE);
bankAccount = new AccountRepository().getAccount();
binding = ActivitymainBinding.inflate(getLayoutInflater());
setContentVIEw(binding.getRoot());
bindBankDataToRadiobuttons(bankAccount);
bindBankDataToVIEws(bankAccount);
binding.rbGroup.setoncheckedchangelistener(new RadioGroup.oncheckedchangelistener() {
@OverrIDe
public voID oncheckedChanged(RadioGroup group,int checkedID) {
binding.bnpagar.setEnabled(true);
if (checkedID == R.ID.rbotraCantIDad) {
binding.etnuevaCantIDad.setVisibility(VIEw.VISIBLE);
binding.ingreseCantIDad.setVisibility(VIEw.VISIBLE);
} else {
binding.etnuevaCantIDad.setVisibility(VIEw.GONE);
binding.ingreseCantIDad.setVisibility(VIEw.GONE);
}
}
});
binding.bnpagar.setonClickListener(new VIEw.onClickListener() {
@OverrIDe
public voID onClick(VIEw v) {
double amounttopay = getamounttopay();
if (amounttopay == -1.0) {
showToastmessage(getString(R.String.err_cantIDadIncorrecta));
} else if (amounttopay <= bankAccount.getAccountBalance()) {
successpayment successpayment = makePayment(amounttopay,bankAccount);
Intent intent = new Intent(getApplicationContext(),successActivity.class);
intent.putExtra("succesS_EXTRA",successpayment);
startActivity(intent);
finish();
} else {
showToastmessage(getString(R.String.err_saldoInsuficIEntE));
}
}
});
}
private double getamounttopay() {
double amount;
switch (binding.rbGroup.getcheckedRadiobuttonID()) {
case R.ID.rbdeudaActual:
amount = bankAccount.getCurrentDebt();
break;
case R.ID.rbsinInteres:
amount = bankAccount.getMinimumPaymentDue();
break;
case R.ID.rbpagoMinimo:
amount = bankAccount.getPaymentDue();
break;
default:
amount = getamountFromEditText(binding.etnuevaCantIDad);
}
return amount;
}
private double getamountFromEditText(EditText editText) {
try {
String text = editText.getText().toString();
return Double.parseDouble(text);
} catch (numberFormatException E) {
return -1.0;
}
}
private voID bindBankDataToRadiobuttons(BankAccount bankAccount) {
binding.rbdeudaActual.setText(
getString(R.String.label_deudaActual,bankAccount.getCurrentDebt())
);
binding.rbsinInteres.setText(
getString(R.String.label_sinInteres,bankAccount.getMinimumPaymentDue())
);
binding.rbpagoMinimo.setText(
getString(R.String.label_pagoMinimo,bankAccount.getPaymentDue())
);
}
private voID bindBankDataToVIEws(BankAccount bankAccount) {
binding.cardlayout.tvAccountname.setText(bankAccount.getAccountname());
//El String label_peso_sign pIDe un número,por eso el método getString recibe
//un segundo parámetro,que en este caso es el accountBalance.
binding.cardlayout.tvAccountBalance.setText(getString(R.String.label_peso_sign,bankAccount.getAccountBalance()));
binding.cardlayout.tvAccountnumber.setText(bankAccount.getAccountnumber());
binding.cardlayout.tvCardname.setText(bankAccount.getCardname());
binding.cardlayout.tvCardnumber.setText(bankAccount.getCardnumber());
binding.cardlayout.tvCurrentDebtamount.setText(getString(R.String.label_peso_sign,bankAccount.getCurrentDebt()));
binding.cardlayout.tvClosingDateBalanceamount.setText(getString(R.String.label_peso_sign,bankAccount.getClosingDateBalance()));
binding.cardlayout.tvPaymentDate.setText(bankAccount.getPaymentDueDate());
}
private voID showToastmessage(String messagE) {
Toast.makeText(this,message,Toast.LENGTH_SHORT).show();
}
private successpayment makePayment(double amount,BankAccount bankAccount) {
String date = new SimpleDateFormat(
"dd 'de' MMMM 'de' yyyy",new Locale("es","MX")
).format(new Date(Calendar.geTinstance().getTimeInMillis()));
String referencenumber = UUID.randomUUID().toString().subString(0,10);
// amount -> double
// date -> String
// referencenumber -> String
// bankAccount -> BankAccount
return new successpayment(
amount,date,referencenumber,bankAccount
);
}
}
这是我的 Activity_main.xml:
<?xml version="1.0" enCoding="utf-8"?>
<linearLayout xmlns:androID="http://scheR_786_11845@as.androID.com/apk/res/androID"
androID:layout_wIDth="match_parent"
androID:layout_height="match_parent"
androID:orIEntation="vertical">
<include
androID:ID="@+ID/cardlayout"
layout="@layout/card_layout" />
<RadioGroup
androID:layout_wIDth="match_parent"
androID:layout_height="wrap_content"
androID:ID="@+ID/rbGroup">
<Radiobutton
androID:ID="@+ID/rbdeudaActual"
androID:layout_wIDth="match_parent"
androID:layout_height="wrap_content"
androID:layout_margintop="10dp"
androID:layout_marginStart="10dp"
androID:text="@String/label_deudaActual" />
<Radiobutton
androID:ID="@+ID/rbpagoMinimo"
androID:layout_wIDth="match_parent"
androID:layout_height="wrap_content"
androID:layout_margintop="10dp"
androID:layout_marginStart="10dp"
androID:text="@String/label_pagoMinimo" />
<Radiobutton
androID:ID="@+ID/rbsinInteres"
androID:layout_wIDth="match_parent"
androID:layout_height="wrap_content"
androID:layout_marginStart="10dp"
androID:layout_margintop="10dp"
androID:text="@String/label_sinInteres" />
<Radiobutton
androID:ID="@+ID/rbotraCantIDad"
androID:layout_wIDth="match_parent"
androID:layout_height="wrap_content"
androID:layout_marginStart="10dp"
androID:layout_margintop="10dp"
androID:text="@String/label_otraCantIDad" />
<TextVIEw
androID:layout_wIDth="match_parent"
androID:layout_height="wrap_content"
androID:textcolor="@color/black"
androID:layout_margintop="10dp"
androID:layout_marginStart="5dp"
androID:text="@String/label_nuevaCantIDad"
androID:ID="@+ID/ingreseCantIDad"/>
<EditText
androID:ID="@+ID/etnuevaCantIDad"
androID:layout_marginStart="5dp"
androID:layout_wIDth="match_parent"
androID:layout_height="wrap_content"
androID:inputType="number"
androID:imeOptions="actionDone">
</EditText>
</RadioGroup>
<Space
androID:ID="@+ID/espacio"
androID:layout_wIDth="match_parent"
androID:layout_height="0dp"
androID:layout_weight="1" />
<button
androID:ID="@+ID/bnpagar"
androID:layout_wIDth="match_parent"
androID:layout_height="wrap_content"
androID:text="@String/label_pagar" />
</linearLayout>
这是我的成功Activity.java:
package com.example.bankapp.ui;
import androID.os.bundle;
import androIDx.Annotation.Nullable;
import androIDx.appcompat.app.AppCompatActivity;
import com.example.bankapp.R;
import com.example.bankapp.databinding.ActivitysuccessBinding;
import com.example.bankapp.domain.successpayment;
public class successActivity extends AppCompatActivity {
private ActivitysuccessBinding binding;
@OverrIDe
protected voID onCreate(@Nullable Bundle savedInstanceStatE) {
binding = ActivitysuccessBinding.inflate(getLayoutInflater());
setContentVIEw(binding.getRoot());
super.onCreate(savedInstanceStatE);
setContentVIEw(R.layout.activity_success);
successpayment payment = geTintent().getParcelableExtra("succesS_EXTRA");
}
}
<?xml version="1.0" enCoding="utf-8"?>
<linearLayout xmlns:androID="http://scheR_786_11845@as.androID.com/apk/res/androID"
xmlns:app="http://scheR_786_11845@as.androID.com/apk/res-auto"
xmlns:tools="http://scheR_786_11845@as.androID.com/tools"
androID:layout_wIDth="match_parent"
androID:layout_height="match_parent"
androID:orIEntation="vertical">
<ImageVIEw
androID:ID="@+ID/imageVIEw2"
androID:layout_wIDth="match_parent"
androID:layout_height="match_parent"
androID:contentDescription="@String/label_current_debt"
tools:srcCompat="@tools:sample/avatars" />
</linearLayout>
这是我的 AndroID 清单:
<?xml version="1.0" enCoding="utf-8"?>
<manifest xmlns:androID="http://scheR_786_11845@as.androID.com/apk/res/androID"
package="com.example.bankapp">
<application
androID:allowBACkup="true"
androID:icon="@mipmap/ic_launcher"
androID:label="@String/app_name"
androID:rounDicon="@mipmap/ic_launcher_round"
androID:supportsRtl="true"
androID:theme="@style/theme.bankApp">
<activity androID:name=".ui.MainActivity">
<intent-filter>
<action androID:name="androID.intent.action.MAIN" />
<category androID:name="androID.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity androID:name=".ui.successActivity" > </activity>
</application>
</manifest>
首先我不知道你为什么要使用这种方法来膨胀布局,而不仅仅是 setContentview 方法,并将活动作为上下文添加到相应的 xml 中。
第二次尝试在 onCreate 方法中保持对 super.onCreate 的调用
@Override
protected void onCreate(@Nullable Bundle savedInstanceStatE) {
super.onCreate(savedInstanceStatE);
binding = ActivitysuccessBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
setContentView(R.layout.activity_success);
successPayment payment = geTintent().getParcelableExtra("succesS_EXTRA");
}
}
以上是大佬教程为你收集整理的如何通过 Intent 移动到下一个活动全部内容,希望文章能够帮你解决如何通过 Intent 移动到下一个活动所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。