我在为Buttons
设置onclicklistener
时遇到问题。虽然其中一些工作正常,但其他人却没有工作。该代码显示没有错误,但是当我运行该应用程序时,出现了Log
中的错误,其中一个说NullPointerException
按钮而不是匿名,但是这告诉我无效onClick()
不是有效的变量类型。我曾尝试将Button
的XML代码设置为调用代码中定义的onClick()
,但这也会在运行时引发错误。我也尝试在onCreate()
之外声明onClick()
,但在运行时也会引发错误。不工作的按钮是homeb01。我被卡住了,我的代码在下面,我真的可以使用一些帮助。谢谢。Android按钮onClickListener会抛出空例外
package com.example.deenbuddy;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
public class MainActivity extends Activity
{
MainActivity context;
//Arrays for RowItem values
final Integer[] uname = new Integer[] {R.string.temp_uname0,R.string.temp_uname0,R.string.temp_uname0,R.string.temp_uname0};
final Integer[] ustatus = new Integer[]{R.string.temp_ustatus0,R.string.temp_ustatus0,R.string.temp_ustatus0,R.string.temp_ustatus0};
final Integer[] upic = new Integer[]{R.drawable.tig0,R.drawable.tig0,R.drawable.tig0,R.drawable.tig0};
//ListView and RowItem for ListView
ListView listview;
List<RowItem> rowItem;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = this;
//Navigation Buttons
final Button homeb0 = (Button) findViewById(R.id.home_b0);
final Button newsb0 = (Button) findViewById(R.id.news_b0);
final Button featb0 = (Button) findViewById(R.id.feature_b0);
final Button homeb01 = (Button) findViewById(R.id.home_b1);
final Button newsb01 = (Button) findViewById(R.id.news_b1);
final Button featb01 = (Button) findViewById(R.id.feature_b1);
//News Buttons
final ImageView newsb1 = (ImageView) findViewById(R.id.news1);
final ImageView newsb2 = (ImageView) findViewById(R.id.news2);
final ImageView newsb3 = (ImageView) findViewById(R.id.news3);
final ImageView newsb4 = (ImageView) findViewById(R.id.news4);
//Feature Buttons
final ImageView featb1 = (ImageView) findViewById(R.id.feat1);
final ImageView featb2 = (ImageView) findViewById(R.id.feat2);
final ImageView featb3 = (ImageView) findViewById(R.id.feat3);
final ImageView featb4 = (ImageView) findViewById(R.id.feat4);
//OnClicks
//OnClick for Navigation
//h_home
homeb0.setOnClickListener(new View.OnClickListener(){
public void onClick(View view2)
{
setContentView(R.layout.activity_main);
}
});
//f_home
不工作的按钮是这一个,homeb01
homeb01.setOnClickListener(new View.OnClickListener() {
public void onClick(View v)
{
setContentView(R.layout.activity_main);
}
});
//n_home
//h_news
newsb0.setOnClickListener(new View.OnClickListener() {
public void onClick(View v)
{
setContentView(R.layout.newstitle);
}
});
//h_feat
featb0.setOnClickListener(new View.OnClickListener(){
public void onClick(View v)
{
setContentView(R.layout.featurestitle);
}
});
//OnClicks for news
newsb1.setOnClickListener(new View.OnClickListener(){
public void onClick(View v)
{
setContentView(R.layout.newstitle);
}
});
newsb2.setOnClickListener(new View.OnClickListener(){
public void onClick(View v)
{
setContentView(R.layout.newstitle);
}
});
newsb3.setOnClickListener(new View.OnClickListener(){
public void onClick(View v)
{
setContentView(R.layout.newstitle);
}
});
newsb4.setOnClickListener(new View.OnClickListener(){
public void onClick(View v)
{
setContentView(R.layout.newstitle);
}
});
//OnClicks for feat
featb1.setOnClickListener(new View.OnClickListener(){
public void onClick(View v)
{
setContentView(R.layout.featurestitle);
}
});
featb2.setOnClickListener(new View.OnClickListener(){
public void onClick(View v)
{
setContentView(R.layout.featurestitle);
}
});
featb3.setOnClickListener(new View.OnClickListener(){
public void onClick(View v)
{
setContentView(R.layout.featurestitle);
}
});
featb4.setOnClickListener(new View.OnClickListener(){
public void onClick(View v)
{
setContentView(R.layout.featurestitle);
}
});
rowItem = new ArrayList<RowItem>();
for(int x = 0; x < uname.length; x++)
{
RowItem item = new RowItem(upic[x], uname[x], ustatus[x]);
rowItem.add(item);
}
listview = (ListView) findViewById(R.id.sfeed);
CListView adapter = new CListView(this,R.layout.sfeed_list,rowItem);
listview.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
我的logcat如下:
07-11 01:54:58.247: E/Trace(21487): error opening trace file: No such file or directory (2)
07-11 01:54:59.833: D/AndroidRuntime(21487): Shutting down VM
07-11 01:54:59.833: W/dalvikvm(21487): threadid=1: thread exiting with uncaught exception (group=0x414252a0)
07-11 01:54:59.942: E/AndroidRuntime(21487): FATAL EXCEPTION: main
07-11 01:54:59.942: E/AndroidRuntime(21487): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.deenbuddy/com.example.deenbuddy.MainActivity}: java.lang.NullPointerException
07-11 01:54:59.942: E/AndroidRuntime(21487): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2136)
07-11 01:54:59.942: E/AndroidRuntime(21487): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2174)
07-11 01:54:59.942: E/AndroidRuntime(21487): at android.app.ActivityThread.access$700(ActivityThread.java:141)
07-11 01:54:59.942: E/AndroidRuntime(21487): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1267)
07-11 01:54:59.942: E/AndroidRuntime(21487): at android.os.Handler.dispatchMessage(Handler.java:99)
07-11 01:54:59.942: E/AndroidRuntime(21487): at android.os.Looper.loop(Looper.java:137)
07-11 01:54:59.942: E/AndroidRuntime(21487): at android.app.ActivityThread.main(ActivityThread.java:5059)
07-11 01:54:59.942: E/AndroidRuntime(21487): at java.lang.reflect.Method.invokeNative(Native Method)
07-11 01:54:59.942: E/AndroidRuntime(21487): at java.lang.reflect.Method.invoke(Method.java:511)
07-11 01:54:59.942: E/AndroidRuntime(21487): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
07-11 01:54:59.942: E/AndroidRuntime(21487): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
07-11 01:54:59.942: E/AndroidRuntime(21487): at dalvik.system.NativeStart.main(Native Method)
07-11 01:54:59.942: E/AndroidRuntime(21487): Caused by: java.lang.NullPointerException
07-11 01:54:59.942: E/AndroidRuntime(21487): at com.example.deenbuddy.MainActivity.onCreate(MainActivity.java:70)
07-11 01:54:59.942: E/AndroidRuntime(21487): at android.app.Activity.performCreate(Activity.java:5058)
07-11 01:54:59.942: E/AndroidRuntime(21487): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
07-11 01:54:59.942: E/AndroidRuntime(21487): at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100)
07-11 01:54:59.942: E/AndroidRuntime(21487): ... 11 more
07-11 01:55:02.856: I/Process(21487): Sending signal. PID: 21487 SIG: 9
发表您的logcat –
而不是调用'setContentView'多次,使用'ViewFlipper'或'FrameLayout' – intrepidkarthi
我会考虑这一点,并让你知道会发生什么,谢谢 – user2204661