gpt4 book ai didi

android - 从主 Activity 的操作栏图标运行方法

转载 作者:行者123 更新时间:2023-11-29 20:42:41 25 4
gpt4 key购买 nike

我在 main_activity 中有以下方法,当我从 button 中单击时会启动该方法。我是 android 的新手,如果你能帮助我,请多多指教。我想将此方法放置到另一个名为 activity2 的 Activity 中,并从操作栏中运行一个图标。所以在我的 main_activity 的 onOptionsMenuselected 里面,我想放置 activity2.onclick();

这个主要 Activity .. 这是有效的

 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() 移动到其他主要 Activity ,我会得到错误 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;

这是我的第二个 Activity

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));

}
}



}

最佳答案

所以你想在两个 Activity 之间共享一个通用方法。这是好事。

但要实现这一点,该方法应该是 static 或者您必须创建一个两个 Activity 都可以扩展的父类(super class)。

首先尝试使方法静态化。如果不可能,将该方法作为 protected 放在 BaseActivity extends WhateverAndroidBaseActivityYouAreUsing 或其他任何地方并制作 Activity1 extends BaseActivity,对于 Activity2.

关于android - 从主 Activity 的操作栏图标运行方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30783430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com