- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
当我离开带有 ScrollView 的 Activity 然后返回到它时,ScrollView 变黑。发射时,颜色是正确的。就在我离开并返回时,它变黑了。我尝试设置 ScrollView 和内部 LinearLayouts 的背景,但没有任何区别。 ScrollView 由 ViewPager 中的 fragment 膨胀,以防产生差异。
知道为什么会这样吗?
这是 XML
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scroll_formatted"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false">
<LinearLayout style="@style/LinearLayoutVertical">
<ImageView
android:id="@+id/image_formatted"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/image_review_cd"
android:scaleType="centerCrop"/>
<LinearLayout
style="@style/LinearLayoutVertical.WrappedVertical"
android:id="@+id/subject_rating_formatted">
<TextView
android:id="@+id/subject_formatted"
style="@style/TextView.Subject.Bold"
android:background="?darkBackground"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?darkBackground">
<RatingBar
android:id="@+id/rating_formatted"
style="@style/RatingBarFiveStar.Indicator.PointOneStep"
android:background="?darkBackground"/>
</FrameLayout>
<TextView
android:id="@+id/stamp_formatted"
style="@style/FormattedText.Stamp"
android:background="?darkBackground"/>
</LinearLayout>
<TextView
android:id="@+id/headline_formatted"
style="@style/TextView.Headline"/>
<TextView
android:id="@+id/tags_formatted"
style="@style/FormattedTitleValue"/>
<include
android:id="@+id/comment_formatted"
layout="@layout/formatted_title_value"/>
<include
android:id="@+id/locations_formatted"
layout="@layout/formatted_title_value"/>
<include
android:id="@+id/criteria_formatted"
layout="@layout/formatted_title_value"/>
<include
android:id="@+id/facts_formatted"
layout="@layout/formatted_title_value"/>
<include
android:id="@+id/images_formatted"
layout="@layout/formatted_title_data"/>
</LinearLayout>
</ScrollView>
编辑:这里是 Activity 和 fragment :
Activity
public class ActivityFormatReview extends FragmentActivity implements LaunchableUi,
OptionSelectListener, FormattedPagerAdapter.FragmentsObserver {
private static final String TAG = TagKeyGenerator.getTag(ActivityFormatReview.class);
private static final String RETAIN_VIEW
= TagKeyGenerator.getKey(ActivityFormatReview.class, "RetainView");
private static final int LAYOUT = R.layout.view_pager;
private static final int PAGER = R.id.pager;
private FormattedPagerAdapter mAdapter;
private ViewPager mPager;
private FragmentInitialiser mInitialiser;
public ReviewNode getNode(ReviewId id) {
return mAdapter.getNode(id);
}
public void remove(FragmentFormatReview fragment) {
mAdapter.removeFragment(fragment);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(LAYOUT);
Bundle args = getIntent().getBundleExtra(getLaunchTag());
if (args == null) throwNoReview();
AppInstanceAndroid app = AppInstanceAndroid.getInstance(this);
ReviewNode node = app.unpackNode(args);
if (node == null) throwNoReview();
boolean isPublished = NodeLauncher.isPublished(args);
mPager = findViewById(PAGER);
mAdapter = new FormattedPagerAdapter(node, new NodeComparatorMostRecent(),
getSupportFragmentManager(), this, isPublished);
mPager.setAdapter(mAdapter);
mInitialiser = new FragmentInitialiser(app.getUi());
mPager.addOnLayoutChangeListener(mInitialiser);
mPager.addOnPageChangeListener(mInitialiser);
}
@Override
public void onNoFragmentsLeft() {
finish();
}
@Override
public void updateTitle(String title) {
mInitialiser.setTitle(title);
}
@Override
protected void onDestroy() {
super.onDestroy();
mAdapter.detach();
}
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putBoolean(RETAIN_VIEW, true);
super.onSaveInstanceState(outState);
}
@Override
public String getLaunchTag() {
return TAG;
}
@Override
public void launch(UiTypeLauncher launcher) {
launcher.launch(getClass(), getLaunchTag());
}
@Override
public boolean onOptionSelected(int requestCode, String option) {
FragmentFormatReview fragment = getVisibleFragment();
return fragment != null && fragment.onOptionSelected(requestCode, option);
}
@Override
public boolean onOptionsCancelled(int requestCode) {
FragmentFormatReview fragment = getVisibleFragment();
return fragment != null && fragment.onOptionsCancelled(requestCode);
}
@Override
protected void onResume() {
super.onResume();
AppInstanceAndroid.setActivity(this);
}
@Nullable
private FragmentFormatReview getVisibleFragment() {
return mAdapter.getFragment(mPager.getCurrentItem());
}
private void throwNoReview() {
throw new RuntimeException("No review found");
}
private class FragmentInitialiser implements ViewPager.OnLayoutChangeListener, ViewPager
.OnPageChangeListener {
private UiSuite mUi;
private FragmentInitialiser(UiSuite ui) {
mUi = ui;
}
@Override
public void onLayoutChange(View view, int i, int i1, int i2, int i3, int i4, int i5, int
i6, int i7) {
setTitle();
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
setTitle();
}
@Override
public void onPageScrollStateChanged(int state) {
}
private void setTitle() {
FragmentFormatReview fragment = getVisibleFragment();
if (fragment != null) {
setTitle(fragment.isPublished() ?
mAdapter.getTitle(fragment) : Strings.Screens.PREVIEW);
}
}
private void setTitle(String title) {
mUi.getCurrentScreen().setTitle(title);
}
}
}
fragment
public class FragmentFormatReview extends PagerAdapterBasic.PageableFragment implements
ReviewNode.NodeObserver,
DataReference.InvalidationListener,
OptionSelectListener {
private static final String ID = TagKeyGenerator.getKey(FragmentFormatReview.class,
"ReviewId");
private static final String PUBLISHED = TagKeyGenerator.getKey(FragmentFormatReview.class,
"published");
private static final int LAYOUT = R.layout.fragment_review_formatted;
private static final int IMAGE = R.id.image_formatted;
private static final int SUBJECT = R.id.subject_formatted;
private static final int RATING = R.id.rating_formatted;
private static final int HEADLINE = R.id.headline_formatted;
private static final int STAMP = R.id.stamp_formatted;
private static final int COMMENT = R.id.comment_formatted;
private static final int TAGS = R.id.tags_formatted;
private static final int CRITERIA = R.id.criteria_formatted;
private static final int FACTS = R.id.facts_formatted;
private static final int LOCATIONS = R.id.locations_formatted;
private static final int IMAGES = R.id.images_formatted;
private static final int DATA = R.id.section_data;
private static final int IMAGE_PADDING = R.dimen.formatted_image_padding;
private static final int IMAGE_PLACEHOLDER = R.drawable.image_placeholder;
private static final ReviewViewParams.CellDimension FULL
= ReviewViewParams.CellDimension.FULL;
private static final ReviewViewParams.CellDimension HALF
= ReviewViewParams.CellDimension.HALF;
private boolean mIsPublished = true;
private ReviewNode mNode;
private UiSuite mUi;
private RepositorySuite mRepo;
private MenuUi mMenu;
private CoverNodeBannerUi mCover;
private ViewUi<TextView, String> mSubject;
private ViewUi<RatingBar, Float> mRating;
private ViewUi<TextView, RefDataList<DataTag>> mTags;
private ViewUi<TextView, AuthorReference> mStamp;
private FormattedSectionUi<RefCommentList> mComment;
private FormattedSectionUi<RefDataList<DataCriterion>> mCriteria;
private FormattedSectionUi<RefDataList<DataFact>> mFacts;
private FormattedSectionUi<RefDataList<DataLocation>> mLocations;
private FormattedSectionUi<ReviewItemReference<DataSize>> mImages;
public static FragmentFormatReview newInstance(String nodeId, boolean isPublished) {
//Can't use FactoryFragment as Support fragment rather than normal fragment
Bundle args = new Bundle();
args.putString(ID, nodeId);
args.putBoolean(PUBLISHED, isPublished);
FragmentFormatReview fragment = new FragmentFormatReview();
fragment.setArguments(args);
return fragment;
}
public boolean isPublished() {
return mIsPublished;
}
@Override
public String getPageId() {
return mNode.getReviewId().toString();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
AppInstanceAndroid app = AppInstanceAndroid.getInstance(getContext());
mUi = app.getUi();
mRepo = app.getRepository();
View v = inflater.inflate(LAYOUT, container, false);
Bundle args = getArguments();
if (args == null) {
noReview();
return v;
}
mIsPublished = args.getBoolean(PUBLISHED);
setNode(args);
setMenu();
setCover(v);
setSubject(v);
setRating(v);
setStamp(v);
setComment(v);
setTags(v);
setCriteria(v);
setFacts(v);
setLocations(v);
setImages(v);
return v;
}
@Override
public void onCreateOptionsMenu(Menu menu, android.view.MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
mMenu.inflate(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(android.view.MenuItem item) {
return mMenu.onItemSelected(item) || super.onOptionsItemSelected(item);
}
@Override
public void onChildAdded(ReviewNode child) {
update();
}
@Override
public void onChildRemoved(ReviewNode child) {
update();
}
@Override
public void onNodeChanged() {
update();
}
@Override
public void onTreeChanged() {
update();
}
@Override
public boolean onOptionSelected(int requestCode, String option) {
return mMenu.onOptionSelected(requestCode, option);
}
@Override
public boolean onOptionsCancelled(int requestCode) {
return mMenu.onOptionsCancelled(requestCode);
}
@Override
public void onResume() {
super.onResume();
update();
}
@Override
public void onDestroyView() {
super.onDestroyView();
mNode.unregisterObserver(this);
}
@Override
public void onReferenceInvalidated(DataReference<?> reference) {
if (getContainer() != null) getContainer().remove(this);
}
private FactoryCommands getCommandsFactory() {
return mUi.getCommandsFactory();
}
private ConverterGv getConverter() {
return mUi.getGvConverter();
}
private ActivityFormatReview getContainer() {
try {
return (ActivityFormatReview) getActivity();
} catch (ClassCastException e) {
throw new RuntimeException(e);
}
}
private void noReview() {
AppInstanceAndroid app = AppInstanceAndroid.getInstance(getContext());
CurrentScreen currentScreen = app.getUi().getCurrentScreen();
currentScreen.showToast(Strings.Toasts.REVIEW_NOT_FOUND);
currentScreen.close();
}
private void setNode(Bundle args) {
String reviewId = args.getString(ID);
if (reviewId == null) {
noReview();
return;
}
mNode = getContainer().getNode(new DatumReviewId(reviewId));
mNode.registerObserver(this);
ReviewReference reference = mNode.getReference();
if (mNode.isLeaf() && reference != null) reference.registerListener(this);
}
private void setMenu() {
AppInstanceAndroid app = AppInstanceAndroid.getInstance(getContext());
UiSuite ui = app.getUi();
MenuActionItem<GvData> upAction = new MaiUpAppLevel<>(app);
MenuAction<?> action;
if (mIsPublished) {
OptionsCommand command
= getCommandsFactory().newReviewOptionsSelector(ReviewOptionsSelector
.SelectorType.ALL, new NodeAuthorId(mNode));
MaiOptionsCommand<GvData> mai = new MaiOptionsCommand<>(command);
action = new MenuOptionsAppLevel(Strings.Menu.REVIEWS, upAction, mai, ui);
} else {
action = new MenuUpAppLevel(Strings.Screens.PREVIEW, upAction, ui);
}
mMenu = new MenuUi(action);
}
private void update() {
mCover.update();
mImages.update();
mSubject.update();
mRating.update();
mStamp.update();
mTags.update();
mComment.update();
mLocations.update();
mCriteria.update();
mFacts.update();
}
@Nullable
private Command launchView(GvDataType<?> type) {
return mIsPublished ? newLaunchViewCommand(type) : null;
}
private void setCover(View v) {
CellDimensionsCalculator calculator = new CellDimensionsCalculator(getActivity());
CellDimensionsCalculator.Dimensions dims = calculator.calcDimensions(FULL, FULL, 0);
Bitmap placeholder = BitmapFactory.decodeResource(getResources(), IMAGE_PLACEHOLDER);
mCover = new CoverNodeBannerUi((ImageView) v.findViewById(IMAGE), mNode,
mRepo.getAuthorsRepo().getProfile(mNode.getAuthorId()).getProfileImage(),
placeholder, dims);
setLaunchOnClick(mCover, getCommandsFactory().newLaunchBespokeViewCommand(mNode,
"Images", GvImage.TYPE));
}
private void setSubject(View v) {
mSubject = new SubjectNodeUi((TextView) v.findViewById(SUBJECT), mNode, null);
}
private void setRating(View v) {
mRating = new RatingBarTouchable((RatingBar) v.findViewById(RATING), mNode, null);
}
private void setStamp(View v) {
mStamp = new StampNodeUi((TextView) v.findViewById(STAMP), mNode, mRepo.getAuthorsRepo());
setLaunchOnClick(mStamp, launchAuthor());
}
private void setTags(View v) {
mTags = new TagsNodeUi((TextView) v.findViewById(TAGS), mNode);
setLaunchOnClick(mTags, GvTag.TYPE);
}
private void setComment(View v) {
mComment = new CommentNodeUi(getSection(v, COMMENT), (TextView) v.findViewById(HEADLINE),
mNode, launchView(GvComment.TYPE));
}
private void setLocations(View v) {
mLocations = newDataUi(v, LOCATIONS, Strings.Formatted.LOCATIONS, GvLocation.TYPE,
getConverter().newConverterLocations(), VhLocationFormatted.class,
new SimpleViewUi.ReferenceValueGetter<RefDataList<DataLocation>>() {
@Override
public RefDataList<DataLocation> getValue() {
return mNode.getLocations();
}
});
}
private void setCriteria(View v) {
mCriteria = newDataUi(v, CRITERIA, Strings.Formatted.CRITERIA, GvCriterion.TYPE,
getConverter().newConverterCriteria(), VhCriterionFormatted.class,
new SimpleViewUi.ReferenceValueGetter<RefDataList<DataCriterion>>() {
@Override
public RefDataList<DataCriterion> getValue() {
return mNode.getCriteria();
}
});
}
private void setFacts(View v) {
mFacts = newDataUi(v, FACTS, Strings.Formatted.FACTS, GvFact.TYPE,
getConverter().newConverterFacts(), VhFactFormatted.class,
new SimpleViewUi.ReferenceValueGetter<RefDataList<DataFact>>() {
@Override
public RefDataList<DataFact> getValue() {
return mNode.getFacts();
}
});
}
private void setImages(View v) {
LinearLayout section = getSection(v, IMAGES);
RecyclerView grid = section.findViewById(DATA);
float padding = getResources().getDimensionPixelSize(IMAGE_PADDING);
CellDimensionsCalculator calculator = new CellDimensionsCalculator(getActivity());
CellDimensionsCalculator.Dimensions dims = calculator.calcDimensions(HALF, HALF, (int)
padding);
ViewUi<RecyclerView, RefDataList<DataImage>> dataView = newGridUi
(grid, VhImage.class, 1, (int) padding, dims, getConverter().newConverterImages(),
new SimpleViewUi.ReferenceValueGetter<RefDataList<DataImage>>() {
@Override
public RefDataList<DataImage> getValue() {
return mNode.getImages();
}
});
mImages = new ImagesNodeUi(section, dataView, mNode);
}
private void setLaunchOnClick(ViewUi<?, ?> layout, GvDataType<?> type) {
Command onClick = launchView(type);
setLaunchOnClick(layout, onClick);
}
private void setLaunchOnClick(ViewUi<?, ?> layout, @Nullable Command onClick) {
if (mIsPublished && onClick != null) layout.setOnClickCommand(onClick);
}
private <T1 extends HasReviewId, T2 extends GvData, Vh extends ViewHolder>
ViewUi<RecyclerView, RefDataList<T1>>
newGridUi(RecyclerView view, Class<Vh> vhClass,
int span, int padding, CellDimensionsCalculator.Dimensions dims,
DataConverter<T1, T2, ? extends GvDataList<T2>> converter,
SimpleViewUi.ReferenceValueGetter<RefDataList<T1>> getter) {
IdableDataList<T1> empty = new IdableDataList<>(getter.getValue().getReviewId());
GvDataType<T2> dataType = converter.convert(empty).getGvDataType();
GvDataRefAdapter<T1, T2, Vh> adapter
= new GvDataRefAdapter<>(getter, converter, new VhFactory<>(vhClass), dims);
Command onClick = mIsPublished ? newLaunchViewCommand(dataType) : null;
view.addItemDecoration(new PaddedItemDecoration(padding));
return new HorizontalGridUi<>(getContext(), view, adapter, span, onClick);
}
private Command newLaunchViewCommand(GvDataType<?> dataType) {
return getCommandsFactory().newLaunchViewCommand(mUi.newDataView(mNode, dataType));
}
private Command launchAuthor() {
return mUi.getCommandsFactory().newLaunchAuthorCommand(mNode.getAuthorId());
}
private <T extends HasReviewId, G extends GvData> DataExpandableUi<T>
newDataUi(View v, int sectionId, String title, GvDataType<G> dataType,
DataConverter<T, G, ?> converter, Class<? extends ViewHolder> vhClass,
SimpleViewUi.ReferenceValueGetter<RefDataList<T>> getter) {
DataExpandableUi<T> ui = new DataExpandableUi<>(getContext(), getSection
(v, sectionId), title, getter, newVhFactory(vhClass), converter);
setLaunchOnClick(ui, dataType);
return ui;
}
@NonNull
private ViewHolderFactory<ViewHolder> newVhFactory(final Class<? extends ViewHolder> vhClass) {
return new ViewHolderFactory<ViewHolder>() {
@Override
public ViewHolder newViewHolder() {
try {
return vhClass.newInstance();
} catch (java.lang.InstantiationException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
};
}
private LinearLayout getSection(View v, int id) {
return (LinearLayout) v.findViewById(id);
}
private static class NodeAuthorId extends DatumAuthorId {
private ReviewNode mNode;
private NodeAuthorId(ReviewNode node) {
super(node.getReviewId(), node.getAuthorId().toString());
mNode = node;
}
@Override
public ReviewId getReviewId() {
return mNode.getReviewId();
}
@Override
public String toString() {
return mNode.getAuthorId().toString();
}
}
private static class PaddedItemDecoration extends RecyclerView.ItemDecoration {
private final int mPadding;
PaddedItemDecoration(int padding) {
mPadding = padding;
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent,
RecyclerView.State state) {
outRect.right = mPadding;
}
}
}
编辑 2:这是 list 条目:
<activity
android:name=".ApplicationPlugins.PlugIns.UiPlugin.UiAndroid.Implementation.Act
ivities.ActivityFormatReview"
android:configChanges="orientation"
android:exported="true"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan" >
</activity>
最佳答案
受到 Patrick R. 评论的启发,我尝试将背景设置为具有纯色的可绘制对象。在发布我的问题之前,我曾尝试直接设置颜色,但没有成功。也没有将 ScrollView 包装在框架布局中。然而,将背景设置为具有纯色的可绘制对象似乎可以解决问题
ScrollView :
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scroll_formatted"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false"
android:background="@drawable/background">
背景.xml
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="?dominantBackground" />
</shape>
我完全不知道为什么会这样,所以不能肯定地说它是否在所有情况下都解决了问题,但它确实解决了我能够重复产生问题的情况。
关于android - 恢复 Activity 时 ScrollView 变黑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48268695/
我最近在/ drawable中添加了一些.gifs,以便可以将它们与按钮一起使用。这个工作正常(没有错误)。现在,当我重建/运行我的应用程序时,出现以下错误: Error: Gradle: Execu
Android 中有返回内部存储数据路径的方法吗? 我有 2 部 Android 智能手机(Samsung s2 和 s7 edge),我在其中安装了一个应用程序。我想使用位于这条路径中的 sqlit
这个问题在这里已经有了答案: What's the difference between "?android:" and "@android:" in an android layout xml f
我只想知道 android 开发手机、android 普通手机和 android root 手机之间的实际区别。 我们不能从实体店或除 android marketplace 以外的其他地方购买开发手
自Gradle更新以来,我正在努力使这个项目达到标准。这是一个团队项目,它使用的是android-apt插件。我已经进行了必要的语法更改(编译->实现和apt->注释处理器),但是编译器仍在告诉我存在
我是android和kotlin的新手,所以请原谅要解决的一个非常简单的问题! 我已经使用导航体系结构组件创建了一个基本应用程序,使用了底部的导航栏和三个导航选项。每个导航选项都指向一个专用片段,该片
我目前正在使用 Facebook official SDK for Android . 我现在正在使用高级示例应用程序,但我不知道如何让它获取应用程序墙/流/状态而不是登录的用户。 这可能吗?在那种情
我在下载文件时遇到问题, 我可以在模拟器中下载文件,但无法在手机上使用。我已经定义了上网和写入 SD 卡的权限。 我在服务器上有一个 doc 文件,如果用户单击下载。它下载文件。这在模拟器中工作正常但
这个问题在这里已经有了答案: What is the difference between gravity and layout_gravity in Android? (22 个答案) 关闭 9
任何人都可以告诉我什么是 android 缓存和应用程序缓存,因为当我们谈论缓存清理应用程序时,它的作用是,缓存清理概念是清理应用程序缓存还是像内存管理一样主存储、RAM、缓存是不同的并且据我所知,缓
假设应用程序 Foo 和 Eggs 在同一台 Android 设备上。任一应用程序都可以获取设备上所有应用程序的列表。一个应用程序是否有可能知道另一个应用程序是否已经运行以及运行了多长时间? 最佳答案
我有点困惑,我只看到了从 android 到 pc 或者从 android 到 pc 的例子。我需要制作一个从两部手机 (android) 连接的 android 应用程序进行视频聊天。我在想,我知道
用于使用 Android 以编程方式锁定屏幕。我从 Stackoverflow 之前关于此的问题中得到了一些好主意,并且我做得很好,但是当我运行该代码时,没有异常和错误。而且,屏幕没有锁定。请在这段代
文档说: android:layout_alignParentStart If true, makes the start edge of this view match the start edge
我不知道这两个属性和高度之间的区别。 以一个TextView为例,如果我将它的layout_width设置为wrap_content,并将它的width设置为50 dip,会发生什么情况? 最佳答案
这两个属性有什么关系?如果我有 android:noHistory="true",那么有 android:finishOnTaskLaunch="true" 有什么意义吗? 最佳答案 假设您的应用中有
我是新手,正在尝试理解以下 XML 代码: 查看 developer.android.com 上的文档,它说“starStyle”是 R.attr 中的常量, public static final
在下面的代码中,为什么当我设置时单选按钮的外观会发生变化 android:layout_width="fill_parent" 和 android:width="fill_parent" 我说的是
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 9
假设我有一个函数 fun myFunction(name:String, email:String){},当我调用这个函数时 myFunction('Ali', 'ali@test.com ') 如何
我是一名优秀的程序员,十分优秀!