2017-03-02 65 views
0
public abstract class Write_MyArticle extends AppCompatActivity{ 


public Button btn_plus, btn_post, btn_delete; 
public EditText edit_title, edit_contents; 
public Uri imageUri; 
public String absolutePath =null; 
public ImageView image; 
public RelativeLayout layout; 
public Context mContext; 
public Activity activity; 
public Bitmap imageBitmap; 

public final int PICK_FROM_CAMERA = 900; 


public void onDestroy(){ 
    super.onDestroy(); 
    Log.d("message", " passing onDestroy"); 
    if(imageBitmap != null && imageUri != null){ 
     Log.d("message", "delete picture in gallery "); 
     getContentResolver().delete(imageUri, null,null); 
    } 
    imageBitmap = null; 
    imageUri = null; 
} 

protected void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    init(); 
    mContext = this; 
    activity = this; 
    // call_camera(); 
} 

public void call_camera(){ 
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    startActivityForResult(intent, PICK_FROM_CAMERA); 
} 

public void onActivityResult(int requestCode, int resultCode, Intent data){ 
    super.onActivityResult(requestCode, resultCode, data); 


    Log.d("message", "took picture "); 

    if(resultCode != RESULT_OK) 
     return; 

    if(requestCode == PICK_FROM_CAMERA){ 
     //선택한 사진의 uri 
     imageUri = data.getData(); 

     Log.d("message", "URI : "+imageUri); 
     // 선택한 사진의 절대경로 구하는 것 
     Cursor c = this.getContentResolver().query(imageUri, null, null, null, null); 
     c.moveToNext(); 
     absolutePath = c.getString(c.getColumnIndex(MediaStore.MediaColumns.DATA)); 


     Log.d("message", "absolute path of the picture : "+absolutePath); 

     imageBitmap = CameraUtil.resizeBitmap(absolutePath); 
     imageBitmap = CameraUtil.fixOrientation(imageBitmap, absolutePath); 

     Log.d("메시지", "path : "+imageUri.getPath()); 
     Glide.with(this).load(imageUri).into(image); 
     btn_plus.setVisibility(View.GONE); 
     layout.setVisibility(View.VISIBLE); 
    } 
} 

public abstract void init(); 

}呼叫的onDestroy自动

下面

是延伸上述

public class Activity_MyDiary extends Write_MyArticle implements View.OnClickListener{ 

private final int DIARY_TYPE = 1; 
private String title, comments; 



public void init(){ 
    setContentView(R.layout.activity_feed_mydiary); 
    activity = this; 
    mContext = this; 
    btn_plus = (Button)findViewById(R.id.btn_feed_myDiary_plus); 
    btn_plus.setOnClickListener(this); 
    btn_post = (Button)findViewById(R.id.btn_feed_myDiary_post); 
    btn_post.setOnClickListener(this); 
    btn_delete = (Button)findViewById(R.id.btn_feed_myDiary_delete); 
    btn_delete.setOnClickListener(this); 
    edit_title = (EditText)findViewById(R.id.edit_feed_myDiary_title); 
    edit_contents = (EditText)findViewById(R.id.edit_feed_myDiary_contents); 
    image = (ImageView)findViewById(R.id.image_feed_myDiary_captured); 
    layout = (RelativeLayout)findViewById(R.id.layout_feed_myDiary_image); 

} 


public void onClick(View v){ 

    switch (v.getId()){ 

     case R.id.btn_feed_myDiary_plus: 
      call_camera(); 
      break; 

     case R.id.btn_feed_myDiary_post: 


      if(absolutePath == null){ 
       Toast.makeText(mContext, "사진이 없습니다", Toast.LENGTH_SHORT).show(); 
       return; 
      } 
      if(edit_title.getText().toString().equals("")){ 
       Toast.makeText(mContext, "제목을 작성해주세요", Toast.LENGTH_SHORT).show(); 
       return; 
      } 
      if(edit_contents.getText().toString().equals("")){ 
       Toast.makeText(mContext, "내용을 입력해 주세요", Toast.LENGTH_SHORT).show(); 
       return; 
      } 

      title = edit_title.getText().toString(); 
      comments = edit_contents.getText().toString(); 

      DB_SendPicture db_sendPicture = new DB_SendPicture(this, this); 
      db_sendPicture.setOnResultPicture(sendPictureListener); 
      db_sendPicture.execute(imageBitmap); 


      break; 

     case R.id.btn_feed_myDiary_delete: 
      if(imageUri == null){ 
       Toast.makeText(mContext, "사진이 없습니다", Toast.LENGTH_SHORT).show(); 
       return; 
      } 
      getContentResolver().delete(imageUri, null,null); 
      call_camera(); 
      break; 
    } 


} 

我的应用程序的类有调用相机和拍摄图像的功能的活性的影响。 当我单击类号2的按钮时,它调用方法call_camera()在祖先类(上一个) 正如你可以看到,call_camera()方法使用ACTION_IMAGE_CAPTURE并且将结果传递给onActivityResult()

我有2个手机来测试我的应用程序(星系S4和星系J3) 一切工作正常在星系J3。 但是...当我尝试与银河S4的代码, 电话在我保存图片后调用类1编写的onDestroy()。

,我认为没有理由调用的onDestroy(),因为活动仍然在屏幕上。

而且,如果我在打电话call_camera()上(而不是从点击一个按钮) 创建它适用于星系S4太细...

回答

0

虽然拍摄图像的相机引起的方向变化到时候你的活动被销毁。

这类似的问题,在它的工作与它的工作,而当我得到了。 所以,停止使用下面的代码。

将这些添加到您的menifest文件中。

<activity 
    android:name=".CameraActivity" 
    android:screenOrientation="portrait" 
    android:configChanges="orientation|keyboardHidden|screenSize" 
    > 
</activity> 

希望这些帮助你。

+0

谢谢!!!!!!!!!!!! – heesu