Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 数据未从活动传递到片段_Android_Android Fragments_Android Activity - Fatal编程技术网

Android 数据未从活动传递到片段

Android 数据未从活动传递到片段,android,android-fragments,android-activity,Android,Android Fragments,Android Activity,该程序有一个DisplayActivity类,它从LoginActivity类接收数据。DisplayActivity有一个片段,用于显示从LoginActivity传递的数据。 问题是DisplayFragment类接收的捆绑包为空。因此数据没有显示在活动中。我正在附上密码。请强调错误 DisplayActivityclass- public class DisplayActivity extends AppCompatActivity { private Toolbar toolb

该程序有一个
DisplayActivity
类,它从
LoginActivity
类接收数据。
DisplayActivity
有一个
片段
,用于显示从
LoginActivity
传递的数据。 问题是
DisplayFragment
类接收的
捆绑包
为空。因此数据没有显示在
活动
中。我正在附上密码。请强调错误

DisplayActivity
class-

public class DisplayActivity extends AppCompatActivity {

    private Toolbar toolbar;
    private Button editButton;

    private static Bundle infoBundle;

    @Override
    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        setContentView(R.layout.activity_display);

        infoBundle = getIntent().getExtras();
        DisplayFragment details = new DisplayFragment();
        details.setArguments(infoBundle);
        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_details, details).commit();

        toolbar = (Toolbar) findViewById(R.id.tool_bar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setTitle("DisplayScreen");

        editButton = (Button) findViewById(R.id.edit_button);
        editButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent backIntent = new Intent(DisplayActivity.this, LoginActivity.class);
                backIntent.putExtras(infoBundle);
                startActivity(backIntent);
                finish();
            }

        });
    }
public class DisplayFragment extends Fragment {

    public static Bundle backBundle;
    private TextView mTextView;
    public DisplayFragment() {
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        backBundle = getArguments();
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View inflatedView = inflater.inflate(R.layout.fragment_details, container, false);

        if(backBundle != null) {
            String username = backBundle.getString("UserName");
            String emailID = backBundle.getString("E-mail");
            String gender = backBundle.getString("Gender");
            String city = backBundle.getString("City");

            mTextView = inflatedView.findViewById(R.id.user_text);
            mTextView.setText(username);
            mTextView.append("\n");
            mTextView.append(emailID + "\n");
            mTextView.append(gender);
            if (!city.equals("---Select---"))
                mTextView.append("\n" + city);
        }
        return inflatedView;
    }
}
DisplayFragment
class-

public class DisplayActivity extends AppCompatActivity {

    private Toolbar toolbar;
    private Button editButton;

    private static Bundle infoBundle;

    @Override
    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        setContentView(R.layout.activity_display);

        infoBundle = getIntent().getExtras();
        DisplayFragment details = new DisplayFragment();
        details.setArguments(infoBundle);
        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_details, details).commit();

        toolbar = (Toolbar) findViewById(R.id.tool_bar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setTitle("DisplayScreen");

        editButton = (Button) findViewById(R.id.edit_button);
        editButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent backIntent = new Intent(DisplayActivity.this, LoginActivity.class);
                backIntent.putExtras(infoBundle);
                startActivity(backIntent);
                finish();
            }

        });
    }
public class DisplayFragment extends Fragment {

    public static Bundle backBundle;
    private TextView mTextView;
    public DisplayFragment() {
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        backBundle = getArguments();
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View inflatedView = inflater.inflate(R.layout.fragment_details, container, false);

        if(backBundle != null) {
            String username = backBundle.getString("UserName");
            String emailID = backBundle.getString("E-mail");
            String gender = backBundle.getString("Gender");
            String city = backBundle.getString("City");

            mTextView = inflatedView.findViewById(R.id.user_text);
            mTextView.setText(username);
            mTextView.append("\n");
            mTextView.append(emailID + "\n");
            mTextView.append(gender);
            if (!city.equals("---Select---"))
                mTextView.append("\n" + city);
        }
        return inflatedView;
    }
}

我给出了LoginActivity、DisplayActivity和DisplayFragment的完整代码,其中DisplayFragment接收通过DisplayActivity从LoginActivity传递的值。试试这个

后勤活动:

public class LoginActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        findViewById(R.id.btnSubmit).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Bundle bundle = new Bundle();
                bundle.putString("name", "My name is ABCD");
                Intent i = new Intent(LoginActivity.this, DisplayActivity.class);
                i.putExtras(bundle);
                startActivity(i);
            }
        });


    }
}
显示活动:

public class DisplayActivity extends AppCompatActivity {

        private Button editButton;

        private Bundle infoBundle;

        @Override
        protected void onCreate(Bundle bundle) {
            super.onCreate(bundle);
            setContentView(R.layout.activity_display);


            infoBundle = getIntent().getExtras();

            Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.frame_container);
            /*infoBundle = new Bundle();
            infoBundle.putString("name", "ABCD");*/
            DisplayFragment details = new DisplayFragment();
            details.setArguments(infoBundle);
            getSupportFragmentManager().beginTransaction().replace(R.id.frame_container, details).commit();

        }
    }
和显示片段:

public class DisplayFragment extends Fragment {

    public static Bundle backBundle;
    private TextView mTextView, tvValue;

    public DisplayFragment() {
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        backBundle = getArguments();
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View inflatedView = inflater.inflate(R.layout.fragment_details, container, false);

        if (backBundle != null) {
            String username = "";
            username = backBundle.getString("name");


            tvValue = (TextView) inflatedView.findViewById(R.id.tvValue);
            tvValue.setText(username);

        }
        return inflatedView;
    }

    @Override
    public void onResume() {
        super.onResume();
    }
}

请在您的AndroidManifest.xml中为LoginActivity和DisplayActivity添加权限

我给出了LoginActivity、DisplayActivity和DisplayFragment的完整代码,其中DisplayFragment接收LoginActivity通过DisplayActivity传递的值。试试这个

后勤活动:

public class LoginActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        findViewById(R.id.btnSubmit).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Bundle bundle = new Bundle();
                bundle.putString("name", "My name is ABCD");
                Intent i = new Intent(LoginActivity.this, DisplayActivity.class);
                i.putExtras(bundle);
                startActivity(i);
            }
        });


    }
}
显示活动:

public class DisplayActivity extends AppCompatActivity {

        private Button editButton;

        private Bundle infoBundle;

        @Override
        protected void onCreate(Bundle bundle) {
            super.onCreate(bundle);
            setContentView(R.layout.activity_display);


            infoBundle = getIntent().getExtras();

            Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.frame_container);
            /*infoBundle = new Bundle();
            infoBundle.putString("name", "ABCD");*/
            DisplayFragment details = new DisplayFragment();
            details.setArguments(infoBundle);
            getSupportFragmentManager().beginTransaction().replace(R.id.frame_container, details).commit();

        }
    }
和显示片段:

public class DisplayFragment extends Fragment {

    public static Bundle backBundle;
    private TextView mTextView, tvValue;

    public DisplayFragment() {
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        backBundle = getArguments();
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View inflatedView = inflater.inflate(R.layout.fragment_details, container, false);

        if (backBundle != null) {
            String username = "";
            username = backBundle.getString("name");


            tvValue = (TextView) inflatedView.findViewById(R.id.tvValue);
            tvValue.setText(username);

        }
        return inflatedView;
    }

    @Override
    public void onResume() {
        super.onResume();
    }
}

请在您的AndroidManifest.xml中为LoginActivity和DisplayActivity添加权限

,张贴用于将数据放入
意图
的代码,并启动
DisplayActivity
检查活动中的捆绑包是否包含内容。如果它是
null
,请检查它来自何处。问题已解决。实际上,文本在工具栏上重叠,因此不可见。更改有缺陷的设计后,数据现在显示。虽然如果我删除-if(backBundle!=null)语句,就会发生NullpointerException。无论如何,感谢您的关注。将用于将数据放入
Intent
中的代码发布,然后启动
DisplayActivity
检查活动中的捆绑包是否包含内容。如果它是
null
,请检查它来自何处。问题已解决。实际上,文本在工具栏上重叠,因此不可见。更改有缺陷的设计后,数据现在显示。虽然如果我删除-if(backBundle!=null)语句,就会发生NullpointerException。无论如何,谢谢你的关心。