切换到第二个活动时按钮不起作用

时间:2018-03-24 11:40:35

标签: java android android-activity

大家好, 我是android新手,我有一个疑问。 我的应用程序中有两个活动。 当我使用按钮进入第二个活动并在第二个按下按钮 按钮不起作用的活动。

第一项活动(主要活动)

public class dashBoard extends AppCompatActivity {

private Button btnEmiCalculatorVar;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dash_board);

    btnEmiCalculatorVar = (Button) findViewById(R.id.btnEmiCalculator);
    btnEmiCalculatorVar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
          setContentView(R.layout.activity_calc_emi);

        }
    });
}
}

添加第二个活动只是因为它说的是MOSTLY CODE。

public class calcEmi extends AppCompatActivity {

private Button btnCalculateVar;
TextView editText4;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_calc_emi);
    editText4       = (TextView) findViewById(R.id.txtEmiResult);
    btnCalculateVar = (Button) findViewById(R.id.btnCalculate);


    btnCalculateVar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            editText4.setText("Button is Clicked");//this part not working
         }
    });

}
}

主要活动XML文件

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.rathod.nitin.emicalc.dashBoard">

<Button
    android:id="@+id/btnEmiCalculator"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="EMI CALCULATOR"
    tools:layout_constraintTop_creator="1"
    tools:layout_constraintRight_creator="1"
    android:layout_marginEnd="110dp"
    app:layout_constraintRight_toRightOf="parent"
    android:layout_marginTop="83dp"
    app:layout_constraintTop_toTopOf="parent" />

<TextView
    android:id="@+id/textView6"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView"
    tools:layout_constraintTop_creator="1"
    android:layout_marginStart="9dp"
    android:layout_marginTop="42dp"
    app:layout_constraintTop_toBottomOf="@+id/btnEmiCalculator"
    tools:layout_constraintLeft_creator="1"
    app:layout_constraintLeft_toLeftOf="@+id/btnEmiCalculator" />
</android.support.constraint.ConstraintLayout>

第二个活动XML

 <?xml version="1.0" encoding="utf-8"?>
 <android.support.constraint.ConstraintLayout 
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context="com.rathod.nitin.emicalc.calcEmi">

 <TextView
     android:id="@+id/textView"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="EMI CALCULATOR"
     android:textSize="20sp"
     tools:layout_constraintTop_creator="1"
     android:layout_marginStart="16dp"
     android:layout_marginTop="16dp"
     tools:layout_constraintLeft_creator="1"
     app:layout_constraintLeft_toLeftOf="parent"
     app:layout_constraintTop_toTopOf="parent" />
 <TextView
     android:id="@+id/txtEmiResult"
     android:layout_width="90dp"
     android:layout_height="24dp"
     android:layout_marginLeft="10dp"
     android:layout_marginStart="13dp"
     android:text="Test"
     android:textSize="20sp"
     app:layout_constraintBaseline_toBaselineOf="@+id/textView5"
     app:layout_constraintLeft_toRightOf="@+id/textView5"
     tools:layout_constraintBaseline_creator="1"
     tools:layout_constraintLeft_creator="1" />
  </android.support.constraint.ConstraintLayout>

3 个答案:

答案 0 :(得分:0)

......艰难的一个。

首先,你没有开始第二次Activity。你的setContentView()内部按钮onClick()调用除了交换布局XML文件之外什么也没做,这在这种情况下无关紧要,Activity保持不变。考虑使用Intent开始您的第二个Activity

其次,请注意您的第二个Activity没有Button,只有2 TextViews。您将从XML绑定到您的代码内引用时获得ClassCastException,因为它是TextView,而不是Button。更不用说NullPointerException来自findViewById(R.id.btnCalculate)的{​​{1}},因为它似乎不存在于您的XML文件中。

答案 1 :(得分:0)

嘿,您正在尝试替换视图而不是启动活动。 在onClick函数里面写这个

Intent intent = new Intent(getApplicationContext(),SecondActivity.class);
startActivity(intent);

而不是

setContentView(R.layout.activity_calc_emi);

答案 2 :(得分:-1)

您需要开始第二项活动。

替换:

setContentView(R.layout.activity_calc_emi);

使用:

startActivity(new Intent(dashBoard.this, calcEmi.class));

您的btnCalculate文件中没有任何ID为activity_calc_emi.xml的按钮。所以它会抛出一个null异常。