gpt4 book ai didi

java - 在 MainActivity 和 SurfaceView 之间共享数据

转载 作者:搜寻专家 更新时间:2023-11-01 09:29:11 25 4
gpt4 key购买 nike

我是 android studio 的新手,我对 Java 不太熟悉。

我的问题是,如何将我在 MainActivity 中创建的函数用于 SurfaceView ?

我会更好地解释我的情况:用户拍照。然后它被保存(我的函数 onPictureTaken)。但是用户必须输入图像的名称,以便使用其标识符而不是 currentTimeMillis 进行注册。

在 MainActivity 中,我检索了在 EditText 中输入的内容,但我不知道如何传达这两个内容。

我如何获取文本:

public void getText()
{
EditText text = (EditText)findViewById(R.id.imageName);
String nomPhoto = text.getText().toString();
if (nomPhoto.trim().equals("")) {
Toast.makeText(this, "Enter the name of the file", Toast.LENGTH_SHORT).show();
return;
}
}

我如何保存图片:

 @Override
public void onPictureTaken(byte[] arg0, Camera arg1) {
// TODO Auto-generated method stub
photo = BitmapFactory.decodeByteArray(arg0, 0, arg0.length);

//Save pic
if(photo!=null)
{

File file=new File(Environment.getExternalStorageDirectory()+"/dir");

if(!file.isDirectory())
{
file.mkdir();
}

//User must enter the pic name

file = new File(Environment.getExternalStorageDirectory()+"/dir",System.currentTimeMillis()+".jpg");

try
{

FileOutputStream fileOutputStream=new FileOutputStream(file);
photo.compress(Bitmap.CompressFormat.JPEG,100,fileOutputStream);
fileOutputStream.flush();
System.out.println(file);
fileOutputStream.close();


}

catch(IOException e)
{
e.printStackTrace();
}

catch(Exception exception)
{
exception.printStackTrace();
}


}

System.out.println("Pic taken");
monTimer mt=new monTimer();
maCamera.release();
maCamera=null;
mt.start();

}

我试过了,但是我有一个 Java PointerNullException

@Override
public void onPictureTaken(byte[] arg0, Camera arg1) {
// TODO Auto-generated method stub
photo = BitmapFactory.decodeByteArray(arg0, 0, arg0.length);

//Enregistrer photo sur téléphone
if(photo!=null)
{

File file=new File(Environment.getExternalStorageDirectory()+"/dir");

if(!file.isDirectory())
{
file.mkdir();
}

MainActivity obj = new MainActivity();
String tv = obj.storePhotoName();

file = new File(Environment.getExternalStorageDirectory()+"/dir",tv+".jpg");

可能跟handler有关系,但我真的不知道

谢谢!

最佳答案

您可以通过Intent将数据从一个 Activity 发送到另一个 Activity

Intent nextActivity = new Intent(getApplicationContext(), nextActivityName.class);
nextActivity.putExtra("key", "data");
startActivity(nextActivity);

现在在下一个 Activity 中,您可以获得这些数据

Intent i = getIntent();
String str = i.getStringExtra("key");

确保在 getStringExtra 方法中使用与在 putExtra 方法中传递数据相同的 key 值。

关于java - 在 MainActivity 和 SurfaceView 之间共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48629602/

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