This is my codes below. I’m trying to use intent to call another activity in my pack “Register” in this activity “PictureTakeActivity”. I have another button in this activity, which uses intent to call camera.
The program always stop when I try to call Register.class by clicking the button “GotoRegister”. I’ve added “Register” activity in the manifest.
in DDMS:
Unable to instantiate activity
ComponentInfo{Picture.Capture/Picture.Capture.Register}:
java.lang.NullPointerException
11-21 20:39:08.057: E/AndroidRuntime(539): FATAL EXCEPTION: main
11-21 20:39:08.057: E/AndroidRuntime(539): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{Picture.Capture/Picture.Capture.Register}: java.lang.NullPointerException
11-21 20:39:08.057: E/AndroidRuntime(539): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1879)
11-21 20:39:08.057: E/AndroidRuntime(539): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
11-21 20:39:08.057: E/AndroidRuntime(539): at android.app.ActivityThread.access$600(ActivityThread.java:122)
11-21 20:39:08.057: E/AndroidRuntime(539): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
11-21 20:39:08.057: E/AndroidRuntime(539): at android.os.Handler.dispatchMessage(Handler.java:99)
11-21 20:39:08.057: E/AndroidRuntime(539): at android.os.Looper.loop(Looper.java:137)
11-21 20:39:08.057: E/AndroidRuntime(539): at android.app.ActivityThread.main(ActivityThread.java:4340)
11-21 20:39:08.057: E/AndroidRuntime(539): at java.lang.reflect.Method.invokeNative(Native Method)
11-21 20:39:08.057: E/AndroidRuntime(539): at java.lang.reflect.Method.invoke(Method.java:511)
11-21 20:39:08.057: E/AndroidRuntime(539): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
11-21 20:39:08.057: E/AndroidRuntime(539): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
11-21 20:39:08.057: E/AndroidRuntime(539): at dalvik.system.NativeStart.main(Native Method)
11-21 20:39:08.057: E/AndroidRuntime(539): Caused by: java.lang.NullPointerException
11-21 20:39:08.057: E/AndroidRuntime(539): at android.app.Activity.findViewById(Activity.java:1794)
11-21 20:39:08.057: E/AndroidRuntime(539): at Picture.Capture.Register.<init>(Register.java:31)
11-21 20:39:08.057: E/AndroidRuntime(539): at java.lang.Class.newInstanceImpl(Native Method)
11-21 20:39:08.057: E/AndroidRuntime(539): at java.lang.Class.newInstance(Class.java:1319)
11-21 20:39:08.057: E/AndroidRuntime(539): at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
11-21 20:39:08.057: E/AndroidRuntime(539): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1870)
11-21 20:39:08.057: E/AndroidRuntime(539): ... 11 more
Can anyone help me find the problem?
I’m new to android. How can we debug android program efficiently when using android emulator? Thank you very much.
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Button cameraButton = (Button)findViewById(R.id.camera_button);
// Get a handle to the button so we can add a handler for the click event
cameraButton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
String iString = Integer.toString(i+100);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File file = new File("/sdcard",iString);
outputFileUri = Uri.fromFile(file);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(intent, TAKE_PICTURE);
i++;
}// This will cause the onActivityResult event to fire once it's done
});
//Call Register.java
Button GotoRegister = (Button) findViewById(R.id.GotoRegister);
}
public void registerhandler(View view)
{
Intent GoRegister = new Intent(PictureTakeActivity.this,Register.class);
startActivity(GoRegister);
Toast toast = Toast.makeText(this, "Hello!", Toast.LENGTH_LONG);
toast.show();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == TAKE_PICTURE)
{`
Uri imageUri = null;
// Check if the result includes a thumbnail Bitmap
if (data != null)
{
if (data.hasExtra("data"))
{
thumbnail = data.getParcelableExtra("data");
// TODO Do something with the thumbnail
SlidingDrawer mysliding= (SlidingDrawer) findViewById(R.id.drawer);
ImageView myimage= (ImageView) findViewById(R.id.content);
myimage.setImageBitmap(thumbnail);
myimage.showContextMenu();
mysliding.open();
}
//Problem!!!! This Bitmap does not have any function!
else {
// TODO Do something with the full image stored
// in outputFileUri
SlidingDrawer mysliding= (SlidingDrawer) findViewById(R.id.drawer);
ImageView myimage= (ImageView) findViewById(R.id.content);
myimage.setImageURI(outputFileUri);
mysliding.open();
}
}
}
}
Register class:
public class Register extends Activity
{
public
TextView RegisterName= (TextView)findViewById(R.id.RegisterName);
final int PICTURE_ACTIVITY = 1;
private static int TAKE_PICTURE = 1;
@Override
public void onCreate(Bundle savedInstanceState)
{
Bitmap bit=Picture.Capture.PictureTakeActivity.thumbnail;
super.onCreate(savedInstanceState);
setContentView(R.layout.register_layout);
RegisterName.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v){
RegisterName.clearComposingText();
}
});
ImageView Registerimage= (ImageView)findViewById(R.id.RegisterPicture);
// Relply intent from PictureTakeAcitivity and go Back
Button GoBack=(Button)findViewById(R.id.GoBack);
GoBack.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent replyIntent = new Intent();
setResult(RESULT_OK, replyIntent);
finish();
AddEntry();
}
}
);
}
private void AddEntry()
{
final Button RegisterButton=(Button)findViewById(R.id.RegisterButton);
RegisterButton.setOnClickListener
(new OnClickListener()
{
@Override
public void onClick(View v)
{
String EntryName=(String) RegisterName.getText();
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File file = new File(getFilesDir(),EntryName);
Uri registryFileUri = Uri.fromFile(file);
intent.putExtra(MediaStore.EXTRA_OUTPUT, registryFileUri);
startActivityForResult(intent,TAKE_PICTURE);
}
}
);
}
}
Can’t find the textview before you’ve loaded the layout, put it after :