在Android中,如何通过Intent在活动之间传递输入流?
我有一个在Android中,如何通过Intent在活动之间传递输入流?,android,android-intent,inputstream,Android,Android Intent,Inputstream,我有一个InputStream对象 InputStream _fileInput; 我想将其发送到另一个活动,比如: Intent intent = new Intent(MainActivity.this, ChildActivity.class); 我该怎么做呢?您不能通过意图传递它,也不能作为额外的(因为它不是可打包的),您可以在main活动中创建一个公共getter方法,并在子活动中调用它 示例代码: class MainActivity { private static
InputStream
对象
InputStream _fileInput;
我想将其发送到另一个活动,比如:
Intent intent = new Intent(MainActivity.this, ChildActivity.class);
我该怎么做呢?您不能通过
意图传递它,也不能作为额外的(因为它不是可打包的),您可以在main活动中创建一个公共getter
方法,并在子活动中调用它
示例代码:
class MainActivity {
private static InputStream mInputStream;
@Override
protected onCreate(...) {
mInputStream = new InputStream(.....);
Intent i = new Intent(MainActivity.this, ChildActivity.class);
startActivity(i);
}
public static getInStream() {
return mInputStream;
}
}
class ChildActivity {
@Override
protected onCreate(...) {
InputStream theInputStream = MainActivity.getInStream();
}
}
我认为这不是最好的解决方案,但它仍然很重要,我认为我永远不会在活动之间传递输入流之类的东西
如果我能问,你为什么需要这个
解决方案2-使用帮助器类
您可以使用SingletonHelper
类来轻松跟踪所需的对象
类助手将是:
class Helper {
private static Helper mHelper;
private InputStream mInputStream;
private Helper(){
}
public static Helper getInstance() {
if (mHelper != null)
return mHelper;
return new Helper();
}
public void setInputStreamer(InputStream is){
mInputStream = is
}
public InputStream getInputStreamer(){
return mInputStream
}
}
然后在main活动中调用:
is = new InputStream(...);
Helper.getInstance().setInputStreamer(is);
Intent i = new Intent(MainActivity.this, ChildActivity.class);
startActivity(i);
InputStream theInputStream = Helper.getInstance().getInputStreamer();
在您的ChildActivity
通话中:
is = new InputStream(...);
Helper.getInstance().setInputStreamer(is);
Intent i = new Intent(MainActivity.this, ChildActivity.class);
startActivity(i);
InputStream theInputStream = Helper.getInstance().getInputStreamer();
您不能通过Intent
传递它,也不能作为额外的(因为它不是可打包的),您可以在MainActivity中创建一个公共getter
方法,并在子Activity
中调用它
示例代码:
class MainActivity {
private static InputStream mInputStream;
@Override
protected onCreate(...) {
mInputStream = new InputStream(.....);
Intent i = new Intent(MainActivity.this, ChildActivity.class);
startActivity(i);
}
public static getInStream() {
return mInputStream;
}
}
class ChildActivity {
@Override
protected onCreate(...) {
InputStream theInputStream = MainActivity.getInStream();
}
}
我认为这不是最好的解决方案,但它仍然很重要,我认为我永远不会在活动之间传递输入流之类的东西
如果我能问,你为什么需要这个
解决方案2-使用帮助器类
您可以使用SingletonHelper
类来轻松跟踪所需的对象
类助手将是:
class Helper {
private static Helper mHelper;
private InputStream mInputStream;
private Helper(){
}
public static Helper getInstance() {
if (mHelper != null)
return mHelper;
return new Helper();
}
public void setInputStreamer(InputStream is){
mInputStream = is
}
public InputStream getInputStreamer(){
return mInputStream
}
}
然后在main活动中调用:
is = new InputStream(...);
Helper.getInstance().setInputStreamer(is);
Intent i = new Intent(MainActivity.this, ChildActivity.class);
startActivity(i);
InputStream theInputStream = Helper.getInstance().getInputStreamer();
在您的ChildActivity
通话中:
is = new InputStream(...);
Helper.getInstance().setInputStreamer(is);
Intent i = new Intent(MainActivity.this, ChildActivity.class);
startActivity(i);
InputStream theInputStream = Helper.getInstance().getInputStreamer();
主要活动是逐个读取excel文件(输入流)和ChildActivity阅读表,并调用函数绘制数据。每个模块都可以单独工作,但我被卡在这里了。我建议您将此逻辑保留在活动之外,活动应仅用于处理用户交互。非用户交互的所有内容都应该委托给其他组件。我将编写一个类,该类接受一个文件,读取它,并与另一个类交互以读取工作表。然后定义适当的方法来创建活动和“ExcelReader”类Hello之间的交互,正如您的建议,我使用了上述技术,即使其成为静态变量。它返回另一个类中的变量,但当我使用它时,它表示空值引用。我很高兴它这样做了!记住接受答案,然后!祝您有个美好的一天!答案右侧有一个标记,就在votesMain活动的下方,它正在逐个读取excel文件(输入流)和ChildActivity阅读表,并调用函数绘制数据。每个模块都可以单独工作,但我被卡在这里了。我建议您将此逻辑保留在活动之外,活动应仅用于处理用户交互。非用户交互的所有内容都应该委托给其他组件。我将编写一个类,该类接受一个文件,读取它,并与另一个类交互以读取工作表。然后定义适当的方法来创建活动和“ExcelReader”类Hello之间的交互,正如您的建议,我使用了上述技术,即使其成为静态变量。它返回另一个类中的变量,但当我使用它时,它表示空值引用。我很高兴它这样做了!记住接受答案,然后!祝您有个美好的一天!答案的右边在选票的正下方有一个标记