标签: android-bundle

如何从片段中获取 getArguments 数据?

我正在为我的应用程序使用片段。我还在片段中添加了一个包,但是当我想从包中获取添加的字符串时,编译器向我显示了一个空指针错误,如下所示

Process: com.softmaker.gazi_opu.personalhealthcare, PID: 3253
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toString()' on a null object reference
            at com.softmaker.gazi_opu.personalhealthcare.fragment.GeneralInformationFragment.setValue(GeneralInformationFragment.java:67)
            at com.softmaker.gazi_opu.personalhealthcare.fragment.GeneralInformationFragment.onCreateView(GeneralInformationFragment.java:59)
            at android.support.v4.app.Fragment.performCreateView(Fragment.java:1789)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:955)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138)
            at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740)
            at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501)
            at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:458)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Run Code Online (Sandbox Code Playgroud)

我添加的代码和获取添加的数据代码如下

public static GeneralInformationFragment getInstance(String profileID){
        Bundle bundle = new Bundle();
        bundle.putString("profileId",profileID);
        GeneralInformationFragment generalFragment = new GeneralInformationFragment();
        generalFragment.setArguments(bundle);
        return generalFragment;
    }
Run Code Online (Sandbox Code Playgroud)

现在从 onCreateMethod 中的这个片段获取数据

String id = getArguments().getString("profileId");
        Log.e("ID …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-bundle

3
推荐指数
1
解决办法
7986
查看次数

从服务启动的活动会从捆绑中丢失"额外"

调用代码(在服务中运行):

Intent textIntent = new Intent(this, TextActivity.class);
textIntent.putExtra("text_seq", message.xfer.seq);
textIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(textIntent);
Run Code Online (Sandbox Code Playgroud)

被叫代码(in TextActivity):

@Override
protected void onCreate(Bundle bundle) {
    super.onCreate(bundle);
    Log.d(TAG, "" + bundle.getInt("text_seq"))
    ...
Run Code Online (Sandbox Code Playgroud)

实际上整个包都丢失了 - 上面的代码在调用时会抛出一个NPE bundle.getInt().

我确信有一些我错过的东西......

android android-activity android-bundle

3
推荐指数
1
解决办法
53
查看次数

如何检查 onSaveInstanceState 中 Bundle 对象的大小?

我正在使用 Android Studio 3.0.1,它允许检查Bundle对象onSaveInstanceState

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
}
Run Code Online (Sandbox Code Playgroud)

为此添加一个断点,一旦调试器停止,右键单击Bundle屏幕截图中所示的对象,然后从上下文菜单中选择“显示捆绑对象...”。

Android Studio - 显示捆绑对象

然后会打开一个窗口以列出Bundle对象,如下面的屏幕截图所示:

Android Studio - 捆绑对象

有没有办法找出整个和它的孩子们占据了多少内存Bundle?我想确定更大的块来优化并避免TransactionTooLargeException在 Android >= 7 上抛出。

像 Ubuntu磁盘使用分析器这样的东西会有所帮助 - 请参阅 screeshot:

磁盘使用分析器

android android-studio android-bundle onsaveinstancestate

3
推荐指数
1
解决办法
2254
查看次数

将Bitmap从一个活动传递到另一个活动时失败的BINDER TRANSACTION

我想将图像作为位图从一个活动传递到另一个活动.我想知道是否可以这样做.

发送活动

Intent intent = new Intent(getApplicationContext(), BitmapActivity.class);
                Bundle b = new Bundle();
                b.putParcelable("BITMAP", bitmap);
                intent.putExtras(b);
                startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

接收活动

Bundle bb = this.getIntent().getExtras();
    b = bb.getParcelable("BITMAP");
Run Code Online (Sandbox Code Playgroud)

但我得到了!!! 失败的粘合剂交易!错误

android android-intent android-bitmap android-bundle

2
推荐指数
1
解决办法
8013
查看次数

如何将捆绑商品转换为WorkManager数据

我尝试摆脱此处所述的IntentService处理时间由于Android O背景限制。但是我无法将带有push info作为参数的Bundle Extras 传递给from 。有什么办法可以将Bundle放入数据中吗?GCMWorkManagerBroadcastReceiverWorkManager

android google-cloud-messaging android-intentservice android-bundle android-workmanager

2
推荐指数
1
解决办法
932
查看次数

在Android中通过意图传递捆绑时在Main活动上获取捆绑

所以我遇到的问题是我的应用在启动时一直崩溃,我有两个活动。活动A和活动B。我的应用程序在活动A上启动,但是我在活动B中创建了一个包,并将其发送给活动A。因此,当它启动时,该包为空或为null从而崩溃了,我该如何解决?谢谢。

这是在活动A(启动活动)中创建的

    Bundle extras = getIntent().getExtras();
    Title = extras.getString("Title");
    Description = extras.getString("Description");
    Price = extras.getString("Price");
    Availability = extras.getString("Availability");
Run Code Online (Sandbox Code Playgroud)

然后让我在活动B中创建捆绑包

     Intent intent = new Intent(B.this, A.class);
                Bundle extras = new Bundle();
                extras.putString("Title", PostTitle);
                extras.putString("Description", PostDescription);
                extras.putString("Price", PostPrice);
                extras.putString("Availability", PostAvail);
                intent.putExtras(extras);
                startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

java android android-intent android-activity android-bundle

1
推荐指数
1
解决办法
9477
查看次数

如何使用实例将自定义对象arraylist从activity传递到fragment

我正在使用viewpager并创建片段,我想传递arraylist.所以我尝试了以下的事情:

主要活动:

 private ArrayList<customers> mArrayList = null;

  ViewPagerAdapter adapter = new ViewPagerAdapter(MainActivity.this.getSupportFragmentManager());

  adapter.addFrag(NewCustomer.newInstance(mArrayList ), "NewCustomer");
Run Code Online (Sandbox Code Playgroud)

现在在片段类我正在创建实例:

 public static final ArrayList<customers> data = new ArrayList<customers>();

 public static final NewCustomer newInstance(ArrayList<customers> mArrayList) {

        NewCustomer f = new NewCustomer();
        Bundle bdl = new Bundle(1);
        bdl.putParcelableArrayList(data, mArrayList);
        f.setArguments(bdl);
        return f;
    }
Run Code Online (Sandbox Code Playgroud)

但这不起作用.它在bdl.putParcelableArrayList上显示错误我想获得arraylist并存储到该类的本地arraylist中.

如何使用自定义对象获取arraylist?

android android-fragments android-viewpager android-bundle

1
推荐指数
1
解决办法
3090
查看次数

当savedInstanceState为非null时的情况

如果我没有显式调用onSaveInstanceState(),哪些是可能性,何时savedInstanceState不为null onCreate

我看到一个选项,当系统在崩溃后重新创建我的应用程序时 - 然后savedInstanceState不是null.

还有哪些其他选择?

android android-lifecycle android-activity android-bundle android-savedstate

1
推荐指数
1
解决办法
772
查看次数

Fragment中的参数仍然为null

我正在尝试通过一个包将两个字符串传递给我的另一个片段.问题是,onCreate中的参数仍为null.这是我的代码:

class VenueDetailFragment : Fragment() {

private lateinit var venueId: String
private lateinit var venueName: String

companion object {
    fun newInstance(venue: Venue): VenueDetailFragment {
        val frag = VenueDetailFragment()
        val bundle = Bundle()
        bundle.putString(Extra.VENUE_ID_KEY, venue.id)
        bundle.putString(Extra.VENUE_NAME, venue.name)
        frag.arguments = bundle
        return VenueDetailFragment()
    }
}

private lateinit var viewModel: VenueDetailViewModel

override fun onAttach(context: Context) {
    super.onAttach(context)
    viewModel = ViewModelProviders.of(this).get(VenueDetailViewModel::class.java)
}

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    arguments?.let {
        venueId = it.getString(Extra.VENUE_ID_KEY, "0")
        venueName = it.getString(Extra.VENUE_NAME, getString(R.string.venue_detail_title_unknown))
    }
}

override fun onCreateView(inflater: LayoutInflater, …
Run Code Online (Sandbox Code Playgroud)

android android-fragments kotlin android-bundle

1
推荐指数
1
解决办法
426
查看次数

将长期价值放入捆绑

一个Bundle可以保存多种类型的数据:shortbyte,另一个BundleArrayList<Integer>,但不是简单的long

如何最好地实现?必须将其转换为ArrayList<Integer>吗?

android android-bundle

0
推荐指数
1
解决办法
1388
查看次数

如何在没有钥匙的情况下获得额外服务?

众所周知,我们可以通过使用将额外信息放入Intent putExtra/putExtras,并将其传递给另一个应用程序.在目的地,我们可以getxxxExtra/getExtras用来获取这些信息.但是,所有这些方法都需要一个密钥.

我想知道是否有办法在没有密钥的情况下获取信息.或者,有没有办法检查已设置到捆绑中的所有密钥?

提前致谢!

android android-intent android-bundle

0
推荐指数
1
解决办法
314
查看次数