我想将数据从MainActivity发送到另一个片段,并且尝试了Bundle方法,但是当我发送数据时,我的应用程序崩溃了,因为我是Android编程的新手,所以找不到错误。下面是我的代码Main Activity.java
package com.example.practice;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView text1, text2;
Button btnSend;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager manager = getSupportFragmentManager();
final FragmentTransaction t = manager.beginTransaction();
final FirstFragment f = new FirstFragment();
text1 = findViewById(R.id.tv1);
text2 = findViewById(R.id.tv2);
btnSend = findViewById(R.id.button);
btnSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String txt1 = text1.getText().toString();
String txt2 = text2.getText().toString();
FirstFragment F_frag = new FirstFragment();
Bundle bundle = new Bundle();
bundle.putString("String1", txt1);
bundle.putString("String2", txt2);
f.setArguments(bundle);
t.add(R.id.frame_layout, f);
t.commit();
}
});
}
}
而我的FirstFragment.java代码是
package com.example.practice;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class FirstFragment extends Fragment {
TextView t1, t2;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_first, container, false);
t1 = v.findViewById(R.id.tv1);
t2 = v.findViewById(R.id.tv2);
Bundle b1 = getArguments();
String name = b1.getString("String1");
String text = b1.getString("String2");
t1.setText(name);
t2.setText(text);
return v;
}
}
我的应用程序崩溃了,请告诉我我的问题在哪里,请提前致谢
您需要尝试使用调用片段实例
您可以发送捆绑商品,价值或模型
您的活动
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView text1, text2;
Button btnSend;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager manager = getSupportFragmentManager();
final FragmentTransaction t = manager.beginTransaction();
text1 = findViewById(R.id.tv1);
text2 = findViewById(R.id.tv2);
btnSend = findViewById(R.id.button);
btnSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String txt1 = text1.getText().toString();
String txt2 = text2.getText().toString();
getSupportFragmentManager().beginTransaction().add(R.id.container, FirstFragment.newInstance(txt1,txt2),"FirstFragment").commit();
}
});
}
}
需要在片段类上调用片段实例
package com.example.practice;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public static FirstFragment newInstance(String param1, String param2) {
FirstFragment fragment = new FirstFragment();
Bundle args = new Bundle();
args.putString("value1", param1);
args.putString("value2", param2);
fragment.setArguments(args);
return fragment;
}
public class FirstFragment extends Fragment {
TextView t1, t2;
String mParam1="",mParam2="";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_first, container, false);
t1 = v.findViewById(R.id.tv1);
t2 = v.findViewById(R.id.tv2);
Bundle b1 = getArguments();
if (b1!= null) {
mParam1 = getArguments().getString("value1");
mParam2 = getArguments().getString("value2");
}
String name = mParam1;
String text = mParam2;
t1.setText(name);
t2.setText(text);
return v;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句