开始新活动时Android应用崩溃
我是开发者(我的第一个项目),请帮助!当我开始从activity_main中选择一个没有任何函数的按钮的情况下,从dkk中选择一个新的活动时,它会工作,但是当我尝试在新活动上实际执行某些操作时,例如运行init();它立即停止。我应该改变什么?开始新活动时Android应用崩溃
进口...
公共类fromdkk扩展AppCompatActivity实现View.OnClickListener {
private Button USD,CAD,EUR,GBP;
private EditText insert;
private TextView result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fromdkk);
init();
}
private void init() {
USD=(Button)findViewById(R.id.usd);
CAD=(Button)findViewById(R.id.cad);
EUR=(Button)findViewById(R.id.eur);
GBP=(Button)findViewById(R.id.gbp);
insert=(EditText)findViewById(R.id.ins);
result=(TextView)findViewById(R.id.res);
USD.setOnClickListener(this);// on click do this which is stated later as a function
EUR.setOnClickListener(this);
CAD.setOnClickListener(this);
GBP.setOnClickListener(this);
}
@Override
public void onClick(View view) {
String num1=insert.getText().toString();//get text from user
float usd1= (float) 0.142;
float eur= (float) 0.134;
float cad= (float) 0.192;
float gbp= (float) 0.114;
switch(view.getId()) {//switch between an cases regarding Ids, execute operation which matches button id
case R.id.usd:
float curr = Float.parseFloat(num1) * Float.parseFloat(String.valueOf(usd1));
result.setText(String.valueOf(curr) + " $");
break;
case R.id.cad:
float curr2 = Float.parseFloat(num1) * Float.parseFloat(String.valueOf(cad));
result.setText(String.valueOf(curr2) + " $");
break;
case R.id.eur:
float curr3 = Float.parseFloat(num1) * Float.parseFloat(String.valueOf(eur));
result.setText(String.valueOf(curr3)+ " €");
break;
case R.id.gbp:
float curr4 = Float.parseFloat(num1) * Float.parseFloat(String.valueOf(gbp));
result.setText(String.valueOf(curr4) + " £");
break;
应用程序日志:---------崩溃的开始 E/AndroidRuntime:FATAL EXCEPTION:main 进程:com.example.martin.currencyconverter,PID:2381 java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.martin.currencyconverter/com.example.martin.currencyconverter.fromdkk}:java .lang.NullPointerException:尝试调用虚拟会议HOD '无效android.widget.Button.setOnClickListener(android.view.View $ OnClickListener)' 上的空对象引用 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
logcat的:11-26 16:28:41.191 2247-2438/com.example.martin.currencyconverter I/OpenGLRenderer:初始化EGL 1.4版 11-26 16:28:41.191 2247-2438/com.example.martin.currencyconverter D/OpenGLRenderer:Swap行为1 11-26 16:28:41.316 2247-2438/com.example.martin.currencyconverter E/EGL_emulation:tid 2438:eglSurfaceAttrib(1146):错误0x3009(EGL_BAD_MATCH) 11-26 16:28:41.316 2247- 2438/com.example.martin.currencyconverter W/OpenGLRenderer:无法在曲面0x9f9fec20上设置EGL_SWAP_BEHAVIOR,错误= EGL_BAD_MATCH
,你必须首先初始化按钮查看例如
如果你的XML,你像这样定义
<TextView
android:id="@+id/mybtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="16dp"
android:layout_marginTop="16dp"
android:text="Click me!"
/>
在活动
Button b = (Button) findViewById(R.id.mybtn);
按钮此行Button获取innitialized后那么只有你可以添加listner到它
如果你在一个*Fragment*
你已经写了
Button b = (Button) rootView.findViewById(R.id.mybtn);
其中rootView被认为是膨胀的片段视图。
请将logcat添加到问题中,并确认您要启动的活动位于清单中 –
可能重复[什么是NullPointerException,以及如何修复它?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) – Henry
它在清单中,错误:试图调用虚拟方法'void android.widget.Button.setOnClickListener(android .view.View $ OnClickListener)'的空对象引用 – quant