我在main_activity
中点击button
时启用了以下方法。我是android的新手,所以如果你能帮帮我的话。我想将此方法放在另一个名为activity2
的活动中,并从其中运行一个来自操作栏的图标。所以在main_activity中的onOptionsMenuselected
内,我想放置activity2.onclick();
这个主要的活动..这是有效的
case R.id.add:
Toast.makeText(this, "Search for new photos", Toast.LENGTH_SHORT).show();
openGallery();
// Intent iadd= new Intent(this,AddImage.class);
// startActivity(iadd);
return true;
}
public void openGallery() {
Intent gallery = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivityForResult(gallery, PICK_IMAGE);
}
如果我将opengallery()移动到其他主要活动,则会出现错误nullerpoint异常
06-11 18:20:05.239: E/AndroidRuntime(1841): at com.example.sqlfirst.AddImage.openGallery(AddImage.java:34)
06-11 18:20:05.239: E/AndroidRuntime(1841): at com.example.sqlfirst.MainActivity.onOptionsItemSelected(MainActivity.java:176)
06-11 18:20:05.239: E/AndroidRuntime(1841): at android.app.Activity.onMenuItemSelected(Activity.java:2650)
06-11 18:20:05.239: E/AndroidRuntime(1841): at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:373)
这是我在main_activity中的新代码
case R.id.add:
// AddImage adimg = new AddImage(this);
Toast.makeText(this, "Search for new photos", Toast.LENGTH_SHORT).show();
new AddImage().openGallery();
// Intent iadd= new Intent(this,AddImage.class);
// startActivity(iadd);
return true;
}
return true;
这是我的第二项活动
package com.example.sqlfirst;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;
public class AddImage extends ActionBarActivity {
private static final int PICK_IMAGE = 100;
public AddImage() {
// TODO Auto-generated constructor stub
}
public void openGallery() {
Intent gallery = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivityForResult(gallery, PICK_IMAGE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && requestCode == PICK_IMAGE) {
DBhelper db = new DBhelper(this);
// get image from drawable
Bitmap image = BitmapFactory.decodeResource(getResources(),
R.drawable.sample2);
// convert bitmap to byte
ByteArrayOutputStream stream = new ByteArrayOutputStream();
image.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte imageInByte[] = stream.toByteArray();
db.addContact(new Contact("Main", imageInByte));
}
}
}
答案 0 :(得分:2)
所以你想在两个活动中分享一个共同的方法。这是一件好事。
但要实现这一点,该方法应该是static
或者您必须创建一个活动将扩展的超类。
首先尝试将方法设为静态。如果不可能,请将该方法protected
放在BaseActivity extends WhateverAndroidBaseActivityYouAreUsing
或其他内容中,然后生成Activity1 extends BaseActivity
,Activity2
也一样。