我是Android编程新手 我写了一个程序,在其中我创建了一个按钮。点击它我应该导航到其他页面 我没有收到任何错误,但是当我启动应用程序打开并立即显示“不幸停止”并关闭程序时。
这是我的代码
package com.hotel;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class HotelActivity extends Activity implements OnClickListener {
Button btnClick=null, button1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hotel);
button1 = (Button)findViewById(R.id.button1);
btnClick.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_hotel, menu);
return true;
}
@Override
public void onClick(View v) {
if(R.id.button1==v.getId())
{
Intent i= new Intent(HotelActivity.this,MenuActivity.class);
startActivity(i);
}
// TODO Auto-generated method stub
}
}
,这是其所需的xml文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".HotelActivity" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="162dp"
android:text="@string/start" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/button1"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/hello_world" />
</RelativeLayout>
这是第二页的代码
package com.hotel;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.Toast;
@SuppressLint("ShowToast") public class MenuActivity extends Activity implements OnItemClickListener{
/** Called when the activity is first created. */
ListView lv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.menu);
lv = (ListView)findViewById(R.id.menu_settings);
lv.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
String selValue= (String)lv.getItemAtPosition(arg2);
Toast.makeText(getApplicationContext(), "Selected Item = "+selValue, 1000).show();
// TODO Auto-generated method stub
}
}
,这是其各自的xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/courses">
</ListView>
</LinearLayout>
答案 0 :(得分:3)
我们需要您的LogCat堆栈跟踪能够更好地帮助您。然而,这就是我现在看错了:
btnClick.setOnClickListener(this);
将提供NullPointerException
,因为您findViewById()
btnClick
button1
,button1
。
,btnClick实际上并不存在于您的xml布局文件中,您似乎决定使用OnClickListener
。
因此,请更改button1
,以便您使用button1.setOnClickListener(this);
setContentView()
或者在xml中创建一个id为btnClick的新按钮。然后在您的代码中,在 btnClick = (Button)findViewById(R.id.btnClick);
之后添加以下行:
{{1}}
答案 1 :(得分:0)
button1 =(按钮)findViewById(R.id.button1);
btnClick.setOnClickListener(this);// btnClick is null
使用
button1.setOnClickListener(本);