我是代码行“localButton1.setOnClickListener(新的View.OnClickListener()”的空点异常错误。我在按钮点击时调用此活动。在运行时它给我NPE。请帮我解决这个问题PBLM。
08-26 17:54:34.884: E/AndroidRuntime(2973): FATAL EXCEPTION: main
08-26 17:54:34.884: E/AndroidRuntime(2973): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.positivityapp/com.example.positivityapp.CreateSlideActivity}: java.lang.NullPointerException
08-26 17:54:34.884: E/AndroidRuntime(2973): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1748)
08-26 17:54:34.884: E/AndroidRuntime(2973): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1764)
08-26 17:54:34.884: E/AndroidRuntime(2973): at android.app.ActivityThread.access$1500(ActivityThread.java:122)
08-26 17:54:34.884: E/AndroidRuntime(2973): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1002)
08-26 17:54:34.884: E/AndroidRuntime(2973): at android.os.Handler.dispatchMessage(Handler.java:99)
08-26 17:54:34.884: E/AndroidRuntime(2973): at android.os.Looper.loop(Looper.java:132)
08-26 17:54:34.884: E/AndroidRuntime(2973): at android.app.ActivityThread.main(ActivityThread.java:4025)
08-26 17:54:34.884: E/AndroidRuntime(2973): at java.lang.reflect.Method.invokeNative(Native Method)
08-26 17:54:34.884: E/AndroidRuntime(2973): at java.lang.reflect.Method.invoke(Method.java:491)
08-26 17:54:34.884: E/AndroidRuntime(2973): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
08-26 17:54:34.884: E/AndroidRuntime(2973): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
08-26 17:54:34.884: E/AndroidRuntime(2973): at dalvik.system.NativeStart.main(Native Method)
08-26 17:54:34.884: E/AndroidRuntime(2973): Caused by: java.lang.NullPointerException
08-26 17:54:34.884: E/AndroidRuntime(2973): at com.example.positivityapp.CreateSlideActivity.onCreate(CreateSlideActivity.java:149)
08-26 17:54:34.884: E/AndroidRuntime(2973): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
08-26 17:54:34.884: E/AndroidRuntime(2973): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1712)
我的CreateSlideActivity
package com.example.positivityapp;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import com.example.positivityapp.db.DBAdapter;
import com.example.positivityapp.views.DraggableGridView;
public class CreateSlideActivity extends Activity {
private ArrayList<String> arl;
Boolean arrsize;
DraggableGridView dgv;
ArrayList<String> localArrayList;
DBAdapter localDBAdapter;
private FullImageLoader mLoder;
private Uri musicUrl;
private TextView textViewMessagetitle;
boolean url = true;
private void SaveVideo()
{
if (this.musicUrl != null)
{
String str = this.musicUrl.toString();
this.localDBAdapter.addSlideShow(str, this.arl);
Toast.makeText(getBaseContext(), "Saved!", 0).show();
this.url = false;
finish();
return;
}
if (this.url) {}
this.localDBAdapter.addSlideShow(null, this.arl);
Toast.makeText(getBaseContext(), "Saved!", 0).show();
this.url = true;
finish();
}
private void setListeners()
{
this.dgv.setOnRearrangeListener(new com.animoto.android.views.OnRearrangeListener()
{
public void onRearrange(int paramAnonymousInt1, int paramAnonymousInt2)
{
String str = (String)CreateSlideActivity.this.arl.remove(paramAnonymousInt1);
if (paramAnonymousInt1 < paramAnonymousInt2)
{
CreateSlideActivity.this.arl.add(paramAnonymousInt2, str);
return;
}
CreateSlideActivity.this.arl.add(paramAnonymousInt2, str);
}
});
this.dgv.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
public void onItemClick(AdapterView<?> paramAnonymousAdapterView, View paramAnonymousView, int paramAnonymousInt, long paramAnonymousLong)
{
CreateSlideActivity.this.dgv.removeViewAt(paramAnonymousInt);
CreateSlideActivity.this.arl.remove(paramAnonymousInt);
}
});
}
protected void onActivityResult(int paramInt1, int paramInt2, Intent paramIntent)
{
super.onActivityResult(paramInt1, paramInt2, paramIntent);
if ((paramInt2 == -1) && (paramIntent != null))
{
if (paramInt1 != 1) {
for (;;)
{
if (paramInt1 == 0)
{
this.localArrayList = ((ArrayList)paramIntent.getSerializableExtra("list"));
if (this.arl == null)
{
this.arl = this.localArrayList;
this.arrsize = Boolean.valueOf(true);
}
if (this.arrsize.booleanValue())
{
int k = 0;
if (this.localArrayList != null)
{
this.textViewMessagetitle.setVisibility(0);
this.dgv.setVisibility(0);
this.arl.addAll(this.localArrayList);
k = this.localArrayList.size();
}
for (int m = 0;; m++)
{
if (m >= k / 2)
{
this.arrsize = Boolean.valueOf(false);
return;
}
this.localArrayList.remove(m);
ImageView localImageView2 = new ImageView(this);
localImageView2.setScaleType(ImageView.ScaleType.CENTER_CROP);
localImageView2.setImageBitmap(this.mLoder.getBitmap((String)this.localArrayList.get(m), 300, 300));
this.dgv.addView(localImageView2);
}
}
if (this.localArrayList == null) {
break;
}
this.textViewMessagetitle.setVisibility(0);
this.dgv.setVisibility(0);
this.arl.addAll(this.localArrayList);
int i = this.localArrayList.size();
for (int j = 0; j < i; j++)
{
ImageView localImageView1 = new ImageView(this);
localImageView1.setScaleType(ImageView.ScaleType.CENTER_CROP);
localImageView1.setImageBitmap(this.mLoder.getBitmap((String)this.localArrayList.get(j), 300, 300));
this.dgv.addView(localImageView1);
}
}
}
}
this.musicUrl = paramIntent.getData();
}
}
public void onBackPressed()
{
super.onBackPressed();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_create_slide);
Button localButton1 = (Button)findViewById(R.id.buttonCreateSlideShow);
Button localButton2 = (Button)findViewById(R.id.buttonMusic);
Button localButton3 = (Button)findViewById(R.id.buttonPreview);
Button localButton4 = (Button)findViewById(R.id.buttonSave);
localButton1.setOnClickListener(new View.OnClickListener()
{
public void onClick(View paramAnonymousView)
{
startActivityForResult(new Intent().setClass(CreateSlideActivity.this, MultiPhotoSelectActivity.class), 0);
}
});
localButton2.setOnClickListener(new View.OnClickListener()
{
public void onClick(View paramAnonymousView)
{
Intent localIntent = new Intent();
localIntent.setType("audio/*");
localIntent.setAction("android.intent.action.GET_CONTENT");
CreateSlideActivity.this.startActivityForResult(Intent.createChooser(localIntent, "Complete action using"), 1);
}
});
localButton3.setOnClickListener(new View.OnClickListener()
{
public void onClick(View paramAnonymousView)
{
if (CreateSlideActivity.this.arl == null)
{
Toast.makeText(CreateSlideActivity.this.getBaseContext(), "Choose photos from gallery!", 0).show();
return;
}
Intent localIntent = new Intent();
localIntent.putExtra("list", CreateSlideActivity.this.arl);
localIntent.setData(CreateSlideActivity.this.musicUrl);
localIntent.putExtra("preview", true);
localIntent.putExtra("oldslide", false);
localIntent.setClass(CreateSlideActivity.this, SlideShow.class);
CreateSlideActivity.this.startActivity(localIntent);
}
});
localButton4.setOnClickListener(new View.OnClickListener()
{
public void onClick(View paramAnonymousView)
{
if (CreateSlideActivity.this.arl == null)
{
Toast.makeText(CreateSlideActivity.this.getBaseContext(), "Choose photos from gallery!", 0).show();
return;
}
CreateSlideActivity.this.localDBAdapter = new DBAdapter(CreateSlideActivity.this);
CreateSlideActivity.this.SaveVideo();
}
});
this.dgv = ((DraggableGridView)findViewById(R.id.vgv));
this.textViewMessagetitle = ((TextView)findViewById(R.id.textViewMessagetitle));
this.mLoder = new FullImageLoader(getBaseContext(), (short)200);
setListeners();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.create_slide, menu);
return true;
}
}
我的XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:padding="2.0dip"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:keepScreenOn="true"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<LinearLayout
android:gravity="center"
android:orientation="vertical"
android:id="@+id/layout_button"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/ad1">
<LinearLayout
android:gravity="center"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10.0dip">
<Button
android:id="@+id/buttonChoosePictures"
android:background="@drawable/ingallery"
android:layout_width="100.0dip"
android:layout_height="100.0dip" />
<Button
android:id="@+id/buttonMusic"
android:background="@drawable/inmusic"
android:layout_width="100.0dip"
android:layout_height="100.0dip" />
</LinearLayout>
<LinearLayout android:gravity="center"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10.0dip">
<Button
android:id="@+id/buttonPreview"
android:background="@drawable/inpreview"
android:layout_width="100.0dip"
android:layout_height="100.0dip" />
<Button
android:id="@+id/buttonSave"
android:background="@drawable/insave"
android:layout_width="100.0dip"
android:layout_height="100.0dip" />
</LinearLayout>
<LinearLayout
android:gravity="center"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:textAppearance="?android:textAppearanceMedium"
android:textColor="@android:color/white"
android:id="@+id/textViewMessagetitle"
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="3.0dip"
android:layout_marginBottom="2.0dip"
android:text="Drag slide to arrange slide" />
<com.example.positivityapp.views.DraggableGridView
android:scrollbarStyle="insideOverlay"
android:id="@+id/vgv"
android:background="@drawable/bg_grid"
android:visibility="gone"
android:scrollbars="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5.0dip" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
答案 0 :(得分:0)
xml文件中没有id buttonCreateSlideShow 的按钮
在 onCreate 方法
中更改此行Button localButton1 = (Button)findViewById(R.id.buttonCreateSlideShow);
与
Button localButton1 = (Button)findViewById(R.id.buttonChoosePictures);