我想要的是:按一个按钮,然后应用程序转到另一个布局(页面)。 在此页面上,您按一个按钮,然后在文本框中显示一些文本。 我为每个布局做了一个活动。
我收到此错误 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
答案 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吗?这是一个容错的错过