2017-07-19 81 views
-1

我想知道是否有人可以帮我解决我在onCreate方法中使用if语句时遇到的问题。我正在制作一个按钮,将信息传递给另一个活动,然后该活动将根据我在onCreate方法代码中设置的if语句显示信息。现在我正在四处寻找关于“如果在onCreate方法中声明如何操作?”的信息和关于它的found this question。所以,我更改我的代码以使其与代码中使用的代码类似,但我一直在我的平板电脑上收到“应用程序停止工作”错误消息。所以,我想知道是否有人可以帮助我,告诉我是否编码有问题,或者如果我需要以不同的方式将信息传递给新的活动?或者如果我需要添加任何东西到我错过的代码?如何在新活动的onCreate方法中执行if语句?

预先感谢您!

我的代码

主要活动:(中的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); 
     } 

     } 

    } 

任何想法?

更新:我的问题是解决了(回答后解释)

+1

你的日志说什么? – Vyacheslav

+0

不知道日志说什么,维亚切斯拉夫。有没有办法检查日志,所以我可以报告我发现的内容? – Mike

+0

使用android studio来阅读android日志:stacktrace等。 – Vyacheslav

回答

0

问题解决了

我测试我的应用程序在Android Studio中的另一台计算机上。我将能够找到一个虚拟设备来工作,我发现了一个Java错误。我不记得确切,但它必须做一些我在Oncreate方法和我所谓的工具栏和我设置@style/AppTheme而不是@style/NoActionBar,因为我有@style/AppTheme。它会导致我的新活动出现错误,并强制应用程序崩溃。所以,我做了改变,它的工作原理。

非常感谢大家的代码建议。当我查看不同的代码建议时,我发现了其他几个错误,并希望感谢大家的建议。如果每个人都不会建议查看我的代码并在这里或那里进行更改,我将永远不会看到或发现这些错误。此外,如果您改为我在this error is here上找到的文章。

再次感谢大家的帮助!

0

试试这个在您的新活动

if (passSN.equals("2")){ 
    //your code 
} 
+0

ValueS看起来像是一个textview,并将它等同于一个字符串“2”应该会引发错误。 –

+0

谢谢Jayagopai指出。我忙于试图获取代码设置并检查它以使代码正常工作,我不认为这种错误。我将不得不尝试“.getText()。toString()。equals(”2“)”,看看是否有效。再次感谢您指出这一点。 – Mike

+0

这是我的快乐:) –

0

我将继续并发布我的假设。这可能是错误的,完全没问题。但根据您所描述的症状,听起来就像您的活动因配置更改(将设备从纵向旋转到横向)而被杀死并重新创建。

如果这样的话,那么Android有可能再次开始您的活动,而没有您第一次发送的任何捆绑数据。

首先,你需要做一个null检查:

Bundle extras = getIntent().getExtras(); 

其次,你需要重写onSavedInstanceState和onRestoreInstance状态,以帮助重新填充您的活动。

最后我相信你是不必要地把一个int转换为一个字符串,然后检查它是否相等。

if (passSN.equals("2")){ 

可以变成

if (select == 2) { 
    //do something here 
}