IntDef 通过意图传递

3

有没有最佳方法将IntDef通过Intent发送?

提示:如果您只将其作为int发送,则会失去类型检查,而这正是具有intdef的主要目标。


基本上,将其用作int并通过辅助方法转换为IntDef。 有用的阅读材料:https://dev59.com/nFwY5IYBdhLWcg3w2Ksv#32160715和https://dev59.com/IFwZ5IYBdhLWcg3wM97Z#31737425。 - petey
1个回答

0

你的IntDef在运行时不可用。解决方法是将Intent的生成封装在接收Intent的Activity中。

public class MyActivity extends Activity {

    private static final String KEY_NAVIGATION_MODE = "navigation_mode";
    private @NavigationMode int mNavigationMode;

    public static Intent getStartIntent(Context context, @NavigationMode String navigationMode) {
        Intent intent = new Intent(context, MyActivity.class);
        intent.putExtra(KEY_NAVIGATION_MODE, navigationMode);
        return intent;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //noinspection WrongConstant Safe because we saved it in #getStartIntent
        mNavigationMode = getIntent().getIntExtra(KEY_NAVIGATION_MODE, NAVIGATION_MODE_YOUR_DEFAULT);
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接