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。无论如何,谢谢你的关心。