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

标签 android

我在 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/

相关文章:

java - 无法在 Google Tango 设备中运行 Tango java_basic_examples

android - 获取前台应用程序图标转换为base64

java - 将海拔应用到 TextInputLayout

android - Admob 无法在 google admob 面板中找到转账链接

android - 多步骤流程中的单个 Activity 多个 fragment/单独的 Activity ?

android - 保存 Canvas 然后恢复,这是为什么呢?

android - 在显示 DialogFragment 时禁用基础 View 上的触摸事件

java - 如何检索内部存储器中的每个文件?

Android - RecognizerIntent 搜索联系人

java - 如何将 RecyclerView 所有元素的背景更改为 SharedPreferences 保存的颜色?