Java 将浮动值从分级条从一个片段传递到另一个片段

Java 将浮动值从分级条从一个片段传递到另一个片段,java,android,android-fragments,parameter-passing,Java,Android,Android Fragments,Parameter Passing,我的目标是: 嗨,伙计们,我会尽力详细解释一切 我有两个片段和一个主要活动。我试图实现的是,让用户从评级栏中选择一个评级。将该评级保存到一个变量中,并在第二个片段中显示该值 我曾尝试使用Intent和Bundle来实现这一点,但它在启动时使我的应用程序崩溃。在应用程序中,我有一个有两个选项卡的滑动列表。选项卡1链接到OneFarment.java,选项卡2链接到TwoFragment.java 我觉得这里使用接口的方法不起作用,因为每个片段都有不同的布局。任何帮助或指导都将不胜感激。如果你们需要

我的目标是:

嗨,伙计们,我会尽力详细解释一切

我有两个片段和一个主要活动。我试图实现的是,让用户从评级栏中选择一个评级。将该评级保存到一个变量中,并在第二个片段中显示该值

我曾尝试使用Intent和Bundle来实现这一点,但它在启动时使我的应用程序崩溃。在应用程序中,我有一个有两个选项卡的滑动列表。选项卡1链接到OneFarment.java,选项卡2链接到TwoFragment.java

我觉得这里使用接口的方法不起作用,因为每个片段都有不同的布局。任何帮助或指导都将不胜感激。如果你们需要我发布XML文件的代码,请告诉我

我对如何在我的主要活动中接收值感到困惑,似乎我需要为片段定义一个ID,但我没有片段ID,因为每个片段都有自己的单独布局文件

下面是我所有文件的代码

OneFragment.java

TanavActivity.java

日志:

11-20 12:12:16.128 19867-19867/tanav.sharma E/AndroidRuntime: FATAL EXCEPTION: main
                                                              Process: tanav.sharma, PID: 19867
                                                              java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference
                                                                  at tanav.sharma.TwoFragment.onCreateView(TwoFragment.java:31)
                                                                  at android.support.v4.app.Fragment.performCreateView(Fragment.java:2080)
                                                                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1108)
                                                                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1290)
                                                                  at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801)
                                                                  at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1638)
                                                                  at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:679)
                                                                  at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143)
                                                                  at android.support.v4.view.ViewPager.populate(ViewPager.java:1240)
                                                                  at android.support.v4.view.ViewPager.populate(ViewPager.java:1088)
                                                                  at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1614)
                                                                  at android.view.View.measure(View.java:20221)
                                                                  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6333)
                                                                  at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:700)
                                                                  at android.support.design.widget.HeaderScrollingViewBehavior.onMeasureChild(HeaderScrollingViewBehavior.java:90)
                                                                  at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onMeasureChild(AppBarLayout.java:1364)
                                                                  at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:765)
                                                                  at android.view.View.measure(View.java:20221)
                                                                  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6333)
                                                                  at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                                                  at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
                                                                  at android.view.View.measure(View.java:20221)
                                                                  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6333)
                                                                  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
                                                                  at android.widget.LinearLayout.measureVertical(LinearLayout.java:747)
                                                                  at android.widget.LinearLayout.onMeasure(LinearLayout.java:629)
                                                                  at android.view.View.measure(View.java:20221)
                                                                  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6333)
                                                                  at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                                                  at android.view.View.measure(View.java:20221)
                                                                  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6333)
                                                                  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
                                                                  at android.widget.LinearLayout.measureVertical(LinearLayout.java:747)
                                                                  at android.widget.LinearLayout.onMeasure(LinearLayout.java:629)
                                                                  at android.view.View.measure(View.java:20221)
                                                                  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6333)
                                                                  at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                                                  at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:3111)
                                                                  at android.view.View.measure(View.java:20221)
                                                                  at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2687)
                                                                  at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1640)
                                                                  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1932)
                                                                  at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1528)
                                                                  at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7564)
                                                                  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
                                                                  at android.view.Choreographer.doCallbacks(Choreographer.java:686)
                                                                  at android.view.Choreographer.doFrame(Choreographer.java:622)
                                                                  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
                                                                  at android.os.Handler.handleCallback(Handler.java:739)
                                                                  at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                  at android.os.Looper.loop(Looper.java:148)
                                                                  at android.app.ActivityThread.main(ActivityThread.java:7331)
                                                                  at java.lang.reflect.Method.invoke(Native Method)
                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                                                                at com.android.i
要将数据从一个片段传递到两个片段,您必须使用接口实现交互,并且您不希望立即这样做,因此只需遵循此链接并考虑

头像碎片

作为片段的片段

两个唯一选项单击是否更改了您的评级

并用适当的浮点参数和方法替换int值

但是,它在启动时使我的应用程序崩溃

如果你的应用程序崩溃,总是发布日志,它会告诉每个人错误发生的确切位置

您可能有多个错误,但我从一开始就看到一个逻辑错误

将值存储为浮点数:

但是您尝试使用.getStringExtra来检索它

String vals = i.getStringExtra("star");
记住val是一个浮点而不是字符串,请使用适当的getter: 相反


除了这里的其他答案外,为了获得更灵活的方法,请尝试使用或staic变量。使用这些工具,您可以存储变量并在需要时检索它们,而不必立即启动活动。

我将添加日志,我忘记了这样做:@TanavSharma Pavneet正在引导您走上正确的道路。logcat告诉您TwoFragment.onCreateView中的getArguments返回null,因此您不能在null对象上使用.getStringstars。您需要实际传递TwoFragment浮点值。正如我在回答中提到的,您使用的是一个新的片段,而不是bundleUse floatextra而不是stingextra的片段。。。只需更新我的答案并引用它,而不是仓促地试图复制它,这样就省去了引用不存在的和充满拼写错误的方法的尴尬。注意,我也会给你一个查找有效问题的投票权。当我将I.getStringExtra更改为I.getFloatExtra时,它会给我以下错误:::getFloatExtra String,不能对字符串应用浮点值。@TanavSharma你必须在适当的位置使用put和get float extra。所以,当我将新的TwoFragment更改为TwoFragment时,它说应该有方法调用。这是什么意思?我还没有Java编程经验
package tanav.sharma;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;


public class TwoFragment extends Fragment {
    TextView lblResult;

    public TwoFragment() {
        // Required empty public constructor
    }

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

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.sharma_web, container, false);

        String starRatings = getArguments().getString("stars");
        lblResult = (TextView)view.findViewById(R.id.lblResult);
        lblResult.setText(starRatings);

        return view;
    }




}
11-20 12:12:16.128 19867-19867/tanav.sharma E/AndroidRuntime: FATAL EXCEPTION: main
                                                              Process: tanav.sharma, PID: 19867
                                                              java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference
                                                                  at tanav.sharma.TwoFragment.onCreateView(TwoFragment.java:31)
                                                                  at android.support.v4.app.Fragment.performCreateView(Fragment.java:2080)
                                                                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1108)
                                                                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1290)
                                                                  at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801)
                                                                  at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1638)
                                                                  at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:679)
                                                                  at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143)
                                                                  at android.support.v4.view.ViewPager.populate(ViewPager.java:1240)
                                                                  at android.support.v4.view.ViewPager.populate(ViewPager.java:1088)
                                                                  at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1614)
                                                                  at android.view.View.measure(View.java:20221)
                                                                  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6333)
                                                                  at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:700)
                                                                  at android.support.design.widget.HeaderScrollingViewBehavior.onMeasureChild(HeaderScrollingViewBehavior.java:90)
                                                                  at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onMeasureChild(AppBarLayout.java:1364)
                                                                  at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:765)
                                                                  at android.view.View.measure(View.java:20221)
                                                                  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6333)
                                                                  at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                                                  at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
                                                                  at android.view.View.measure(View.java:20221)
                                                                  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6333)
                                                                  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
                                                                  at android.widget.LinearLayout.measureVertical(LinearLayout.java:747)
                                                                  at android.widget.LinearLayout.onMeasure(LinearLayout.java:629)
                                                                  at android.view.View.measure(View.java:20221)
                                                                  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6333)
                                                                  at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                                                  at android.view.View.measure(View.java:20221)
                                                                  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6333)
                                                                  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
                                                                  at android.widget.LinearLayout.measureVertical(LinearLayout.java:747)
                                                                  at android.widget.LinearLayout.onMeasure(LinearLayout.java:629)
                                                                  at android.view.View.measure(View.java:20221)
                                                                  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6333)
                                                                  at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                                                  at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:3111)
                                                                  at android.view.View.measure(View.java:20221)
                                                                  at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2687)
                                                                  at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1640)
                                                                  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1932)
                                                                  at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1528)
                                                                  at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7564)
                                                                  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
                                                                  at android.view.Choreographer.doCallbacks(Choreographer.java:686)
                                                                  at android.view.Choreographer.doFrame(Choreographer.java:622)
                                                                  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
                                                                  at android.os.Handler.handleCallback(Handler.java:739)
                                                                  at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                  at android.os.Looper.loop(Looper.java:148)
                                                                  at android.app.ActivityThread.main(ActivityThread.java:7331)
                                                                  at java.lang.reflect.Method.invoke(Native Method)
                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                                                                at com.android.i
float val = rating;
...
i.putExtra("star",val);
String vals = i.getStringExtra("star");
float val = i.getFloatExtra("star");