按钮单击第二个布局不起作用

时间:2014-02-13 22:02:59

标签: java android android-layout android-activity

我想要的是:按一个按钮,然后应用程序转到另一个布局(页面)。 在此页面上,您按一个按钮,然后在文本框中显示一些文本。 我为每个布局做了一个活动。

我收到此错误  E / AndroidRuntime(862):java.lang.IllegalStateException:无法在视图类android.widget.Button上的onClick处理程序的活动类tweaks.engineering.MainActivity中找到方法calculateKfactor(View),其id为'btnCalculateKf'

这是我的主要活动的代码,转到其他布局,这有效!:)

更新了MainActivity

public void  Sheetmetal (View view){
    if (view == mbtnSheetmetal){
        setContentView(R.layout.activity_sheetmetal);
        Intent intent = new Intent(this, SheetmetalActivity.class);
        startActivity(intent); 
    }
}       

这是我的第二个活动的代码:SheetmetalActivity

package tweaks.engineeringsheet;

import tweaks.engineering.R;
import tweaks.engineering.R.id;
import tweaks.engineering.R.layout;
import android.widget.EditText;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.view.View;
import android.widget.Button;

public class SheetmetalActivity extends Activity{

    //text box define
    EditText mtxtKfactor;

    //Button define
    Button mbtnCalculateKf;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sheetmetal);

        //connect mtxt"name" to txt"name"
        mtxtKfactor = (EditText) findViewById(R.id.txtKfactor);

        //connect mbtn"name" to btn"name"
        mbtnCalculateKf = (Button) findViewById(R.id.btnCalculateKf);
    }


    public void calculatekfactor(View view){
        if (view == mbtnCalculateKf){       

            mtxtKfactor.setText("works");
            mtxtKfactor.setTextColor(Color.GREEN);

        } //end if
    }//end class
} // end program

3 个答案:

答案 0 :(得分:1)

我认为按钮的onclick调用一个名为 calculateKfactor 的方法 将您的方法公之于众,或者找不到它。
请记住,如果不设置可见性修饰符,您就会看到包的可见性,而不是公开可见性

修改

你说你去第二个活动(你的方法所在的地方)这样做:

 public void  Sheetmetal (View view){
    if (view == mbtnSheetmetal){
        setContentView(R.layout.activity_sheetmetal); 
        }
   }

这会改变主要活动的布局,因此当您看到按钮时,您仍处于第一个活动中,当您单击时,他会在mainActivity中搜索您的方法。
要开始其他活动,请按以下步骤操作:

Intent intent = new Intent(this, YourSecondActivity.class);
startActivity(intent);

答案 1 :(得分:0)

如果你想在主要活动中使用calculateKFactor功能(通过点击按钮),你有几个选择:

1)将该功能从钣金活动中移至主要活动

2)如果你需要在两个活动中使用该函数...对于其中没有calculateKFactor函数的活动,你可以有一个处理初始按钮点击的函数,然后从中调用公共函数第二个文件(该函数也必须是静态的)..

3)替代方法,如果您需要在两个活动中使用该功能...创建一个父活动,这两个活动中的每一个都会延伸..

可能还想检查你的大小写..错误已经用小写计算但是SheetmetalActivity有大写的Calculate ..

答案 2 :(得分:0)

你的Manifest文件中有第二个Activity吗?这是一个容错的错过