android简单开发,使用bmob作为服务器后端,上传图片到bmob失败
以下为我上传的代码:
public void storePicture(){
File file=new File("sdcard/"+PATH);
if (file!=null){
final BmobFile bmobFile=new BmobFile(file);
bmobFile.uploadblock(new UploadFileListener() {
@Override
public void done(BmobException e) {
if (e==null){
Picture picture=new Picture();
picture.setContent(textView.getText().toString());
picture.setFile(bmobFile);
picture.save(new SaveListener<String>() {
@Override
public void done(String s, BmobException e) {
if (e == null) {
Toast.makeText(MainActivity.this, "存取图片成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "存取失败3", Toast.LENGTH_SHORT).show();
}
}
});
}else{
Toast.makeText(MainActivity.this,"存取失败2",Toast.LENGTH_SHORT).show();
}
}
});
}
}
然后每次点击上传按钮后,都会提示错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context cn.bmob.v3.BmobWrapper.getApplicationContext()' on a null object reference
以下是完整的代码,主要就是实现一个简单的点击添加按钮,能够获取手机图片,然后点击上传按钮,能够上传图片到bmob上:
public class MainActivity extends Activity implements View.OnClickListener{
private TextView textView;
private ImageView imageView;
private Button btnAdd,btnSave;
final private int GET_PICTURE=1;
final private int SAVE_PICTURE=2;
private String PATH;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
btnSave.setOnClickListener(this);
btnAdd.setOnClickListener(this);
}
public void initView(){
textView=(TextView)findViewById(R.id.text);
imageView=(ImageView)findViewById(R.id.image);
btnAdd=(Button)findViewById(R.id.addImage);
btnSave=(Button)findViewById(R.id.saveImage);
}
@Override
public void onClick(View v) {
switch (v.getId()){
//获取本地图片,并显示
case R.id.addImage:
getPicture();
break;
//上传图片
case R.id.saveImage:
storePicture();
break;
}
}
public void getPicture(){
Intent intent=new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent,GET_PICTURE);
}
public void storePicture(){
File file=new File("sdcard/"+PATH);
if (file!=null){
final BmobFile bmobFile=new BmobFile(file);
bmobFile.uploadblock(new UploadFileListener() {
@Override
public void done(BmobException e) {
if (e==null){
Picture picture=new Picture();
picture.setContent(textView.getText().toString());
picture.setFile(bmobFile);
picture.save(new SaveListener<String>() {
@Override
public void done(String s, BmobException e) {
if (e == null) {
Toast.makeText(MainActivity.this, "存取图片成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "存取失败3", Toast.LENGTH_SHORT).show();
}
}
});
}else{
Toast.makeText(MainActivity.this,"存取失败2",Toast.LENGTH_SHORT).show();
}
}
});
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode){
case GET_PICTURE:
if (data!=null){
Uri selectedImageUri=data.getData();
String[] proj={MediaStore.Images.Media.DATA};
Cursor cursor=managedQuery(selectedImageUri,proj,null,null,null);
int column_index=cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
PATH=cursor.getString(column_index);
textView.setText(PATH);
try{
Bitmap bitmap= BitmapFactory.decodeStream(this.getContentResolver().openInputStream(Uri.parse(selectedImageUri.toString())));
imageView.setImageBitmap(bitmap);
}catch (FileNotFoundException e){
e.printStackTrace();
}
}else {
Toast.makeText(this,"获取图片失败",Toast.LENGTH_SHORT).show();
}
break;
}
}
}
求大神们帮忙解决下这个问题,debug了好久,也没找出来!
public void storePicture(){
File file=new File("sdcard/"+PATH);
if (file!=null){
final BmobFile bmobFile=new BmobFile(file);
bmobFile.uploadblock(new UploadFileListener() {
@Override
public void done(BmobException e) {
if (e==null){
Picture picture=new Picture();
picture.setContent(textView.getText().toString());
picture.setFile(bmobFile);
picture.save(new SaveListener<String>() {
@Override
public void done(String s, BmobException e) {
if (e == null) {
Toast.makeText(MainActivity.this, "存取图片成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "存取失败3", Toast.LENGTH_SHORT).show();
}
}
});
}else{
Toast.makeText(MainActivity.this,"存取失败2",Toast.LENGTH_SHORT).show();
}
}
});
}
}
然后每次点击上传按钮后,都会提示错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context cn.bmob.v3.BmobWrapper.getApplicationContext()' on a null object reference
以下是完整的代码,主要就是实现一个简单的点击添加按钮,能够获取手机图片,然后点击上传按钮,能够上传图片到bmob上:
public class MainActivity extends Activity implements View.OnClickListener{
private TextView textView;
private ImageView imageView;
private Button btnAdd,btnSave;
final private int GET_PICTURE=1;
final private int SAVE_PICTURE=2;
private String PATH;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
btnSave.setOnClickListener(this);
btnAdd.setOnClickListener(this);
}
public void initView(){
textView=(TextView)findViewById(R.id.text);
imageView=(ImageView)findViewById(R.id.image);
btnAdd=(Button)findViewById(R.id.addImage);
btnSave=(Button)findViewById(R.id.saveImage);
}
@Override
public void onClick(View v) {
switch (v.getId()){
//获取本地图片,并显示
case R.id.addImage:
getPicture();
break;
//上传图片
case R.id.saveImage:
storePicture();
break;
}
}
public void getPicture(){
Intent intent=new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent,GET_PICTURE);
}
public void storePicture(){
File file=new File("sdcard/"+PATH);
if (file!=null){
final BmobFile bmobFile=new BmobFile(file);
bmobFile.uploadblock(new UploadFileListener() {
@Override
public void done(BmobException e) {
if (e==null){
Picture picture=new Picture();
picture.setContent(textView.getText().toString());
picture.setFile(bmobFile);
picture.save(new SaveListener<String>() {
@Override
public void done(String s, BmobException e) {
if (e == null) {
Toast.makeText(MainActivity.this, "存取图片成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "存取失败3", Toast.LENGTH_SHORT).show();
}
}
});
}else{
Toast.makeText(MainActivity.this,"存取失败2",Toast.LENGTH_SHORT).show();
}
}
});
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode){
case GET_PICTURE:
if (data!=null){
Uri selectedImageUri=data.getData();
String[] proj={MediaStore.Images.Media.DATA};
Cursor cursor=managedQuery(selectedImageUri,proj,null,null,null);
int column_index=cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
PATH=cursor.getString(column_index);
textView.setText(PATH);
try{
Bitmap bitmap= BitmapFactory.decodeStream(this.getContentResolver().openInputStream(Uri.parse(selectedImageUri.toString())));
imageView.setImageBitmap(bitmap);
}catch (FileNotFoundException e){
e.printStackTrace();
}
}else {
Toast.makeText(this,"获取图片失败",Toast.LENGTH_SHORT).show();
}
break;
}
}
}
求大神们帮忙解决下这个问题,debug了好久,也没找出来!
...全文
相关推荐
使用Imageloader加载bmob上的图片
把图片上传到bmob服务器上。然后使用Imageloader加载Bmob上的图片。
Bmob图片上传简易教程与实践
Bmob后端云服务是为移动应用开发者提供的一站式后端云服务解决方案。它覆盖了应用后端开发中常见的功能,如数据存储、用户认证、云函数、消息推送等,极大地方便了开发者,使他们能够专注于应用的前端开发和用户体验优化,而不必花费太多时间在搭建和维护服务器基础设施上。在移动应用开发中,与后端云服务的交互很大程度上依赖于API接口。API(Application Programming Interface)提供了一种在不同系统之间进行数据交换和功能调用的标准化方法。
Bmob 图片文字上传(需要修改项目三处错误,写上你自己的对应代码)
本人特意将需要你们自己填写的代码不采用注释,直接让程序出错,希望能更加提醒你们修改后使用
Android使用Bmob简单例子源码
Android使用Bmob简单例子源码,里面包含上传数据到后台,查看后台保存的数据。 本地推送和Web网站推送
Android通过Bmob实现注册登录
内部解释了bmob如何去用,增删查表,只要把你的 应用ID加上就可以用了


