我想知道是否有人可以帮我解决我在onCreate方法中使用if语句的问题。我正在制作一个按钮,将信息传递给另一个活动,然后该活动将根据我在onCreate方法代码中设置的if语句显示信息。现在我正在寻找有关"如何在onCreate方法中使用语句的信息?"和found this question关于它。因此,我更改了我的代码,使其类似于答案中使用的代码,但我一直在使用#34; App停止工作"平板电脑上的错误消息。所以,我想知道是否有人可以帮助我并告诉我,如果我编码错误或者我是否需要以不同的方式将信息传递给新活动?或者如果我需要在我遗漏的代码中添加任何内容?
提前谢谢!
我的代码
主要活动:( onclick方法中的代码)
if (select == 2) {
Intent ShowIntent = new Intent(MainActivity.this, results.class);
ShowIntent.putExtra("SN", select); // int
ShowIntent.putExtra("IN1", IN1T); // string
ShowIntent.putExtra("D1", D1T); // string
ShowIntent.putExtra("Qty1", M1); // int
ShowIntent.putExtra("U1", U1T); // string
ShowIntent.putExtra("IN2", IN2T); // string
ShowIntent.putExtra("D2", D2T); //string
ShowIntent.putExtra("Qty2", M2); // int
ShowIntent.putExtra("U2", U2T); // string
startActivity(ShowIntent);
} else {
Toast.makeText(getApplicationContext(), "Not working...", Toast.LENGTH_LONG).show();
}
新活动(更新代码 - 7/19 5:06)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.results);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
ValueS = (TextView) findViewById(R.id.txtselectv);
welcome = (TextView) findViewById(R.id.txtWelcome);
start =(TextView) findViewById(R.id.txtStarted);
INR = (TextView) findViewById(R.id.txtIN1R);
DR = (TextView) findViewById(R.id.txtD1R);
QTYR = (TextView) findViewById(R.id.txtQty1R);
UR = (TextView) findViewById(R.id.txtU1R);
INR2 = (TextView) findViewById(R.id.txtIN2R);
DR2 = (TextView) findViewById(R.id.txtD2R);
QTYR2 = (TextView) findViewById(R.id.txtQty2R);
UR2 = (TextView) findViewById(R.id.txtU2R);
Bundle extras = getIntent().getExtras();
select = extras.getInt("SN", 0);
passSN = String.valueOf(select);
ValueS.setText(passSN);
if (passSN.equals("2")){
INR.setVisibility(View.VISIBLE);
DR.setVisibility(View.VISIBLE);
QTYR.setVisibility(View.VISIBLE);
UR.setVisibility(View.VISIBLE);
INR2.setVisibility(View.VISIBLE);
DR2.setVisibility(View.VISIBLE);
QTYR2.setVisibility(View.VISIBLE);
UR2.setVisibility(View.VISIBLE);
pIN1 = extras.getString("IN1");
pD1 = extras.getString("D1");
pU1 = extras.getString("U1");
pIN2 = extras.getString("IN2");
pD2 = extras.getString("D2");
pU2 = extras.getString("U2");
INR.setText(pIN1);
DR.setText(pD1);
pM1 = extras.getInt("Qty1", 0);
passM1 = String.valueOf(pM1);
QTYR.setText(passM1);
UR.setText(pU1);
INR2.setText(pIN2);
DR2.setText(pD2);
pM2 = extras.getInt("Qty2", 0);
passM2 = String.valueOf(pM2);
QTYR2.setText(passM2);
UR2.setText(pU2);
}
}
}
有什么想法吗?
更新:我的问题已解决(在回答帖子中解释)
答案 0 :(得分:0)
在新活动
上试试if (passSN.equals("2")){
//your code
}
答案 1 :(得分:0)
查看documentation on the lifecycle of an activity表明,在onCreate()完成之后,您的显示组件(textview等)将无法设置可见性参数。这表明你的可见度设置条件应该在acivity的onStart()中。
答案 2 :(得分:0)
我将继续发表我的假设。这可能是错的,完全没问题。但根据您描述的症状,听起来您的活动因配置更改而被杀死和重新创建(将设备从纵向旋转到横向)。
如果这是事实,那么Android可能会在没有您第一次发送的任何捆绑数据的情况下再次启动您的活动。
首先,您需要对null
进行检查:
Bundle extras = getIntent().getExtras();
其次,您需要覆盖onSavedInstanceState和onRestoreInstance状态以帮助重新填充您的活动。
最后我相信你不必要地将int转换为字符串,然后检查它是否相等。
if (passSN.equals("2")){
可以变成
if (select == 2) {
//do something here
}
答案 3 :(得分:0)
解决了问题
我在另一台计算机上的android studio中测试了我的应用程序。我将能够找到一个虚拟设备工作,我发现了一个java错误。我记不起来了,但是我必须在Oncreate方法中使用我的工具栏做一些事情而我设置@style/AppTheme
而不是@style/NoActionBar
因为我有@style/AppTheme
。它导致我的新活动出错并强制该应用程序崩溃。所以,我做了改动而且有效。
非常感谢大家的代码建议。当我查看不同的代码建议时,我发现了其他几个错误,并且想要感谢大家的建议。如果每个人都没有建议检查我的代码并在这里或那里进行更改,我将永远不会看到或发现这些错误。如果您改为,我在this error is here找到的文章。
再次感谢大家的帮助!