如何通过Intent在Activities之间传递InputStream

时间:2016-07-21 13:32:46

标签: android android-intent inputstream

我有一个InputStream对象

InputStream _fileInput;

我想把它发送到另一个活动,让我们说:

Intent intent = new Intent(MainActivity.this, ChildActivity.class);

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您无法通过Intent传递它,也不能将其作为Extra(因为它不是Parcelable),您可以在MainActivity中创建公共getter方法,在ChildActivity ..

中调用它

示例代码:

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

}

Imho这不是最好的解决方案,但它仍然是一些东西,以为我从来没有在活动之间传递像InputStream这样的东西..

如果我可以问,你为什么需要这个?

<小时/> 解决方案2 - 使用帮助程序类

您可以使用 Singleton Helper类,以便轻松跟踪所需的对象。

班助手将是:

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
    }
}

然后在MainActivity来电:

is = new InputStream(...);
Helper.getInstance().setInputStreamer(is);

Intent i = new Intent(MainActivity.this, ChildActivity.class);
startActivity(i);

ChildActivity电话中:

InputStream theInputStream = Helper.getInstance().getInputStreamer();