Android 从活动更新片段中的textView
我在片段中有3个文本视图 在MainActivity中,我有一个每10秒生成3个字符串的方法 现在我想从活动中更新文本视图,但我不知道如何更新Android 从活动更新片段中的textView,android,Android,我在片段中有3个文本视图 在MainActivity中,我有一个每10秒生成3个字符串的方法 现在我想从活动中更新文本视图,但我不知道如何更新 有人能给我一些建议吗?为xml文件中的文本视图设置id:android:id=“@+id/myId 然后这样做: TextView textView = (TextView) findViewById(R.id.myId); textView.setText("updated text"); 设置xml文件中文本视图的id:android:id=“@+
有人能给我一些建议吗?为xml文件中的文本视图设置id:
android:id=“@+id/myId
然后这样做:
TextView textView = (TextView) findViewById(R.id.myId);
textView.setText("updated text");
设置xml文件中文本视图的id:
android:id=“@+id/myId
然后这样做:
TextView textView = (TextView) findViewById(R.id.myId);
textView.setText("updated text");
它可以通过在活动中使用接口来实现,并在生成字符串时将该参数传递给片段:
public class MainActivity extends AppCompatActivity {
private OnGenerateStringListener onGenerateStringListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
onGenerateStringListener = (OnGenerateStringListener) this;
onStartGenerateStringFragment();
try {
generateString();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
private void generateString() throws InterruptedException {
// After string a is generated
String a = "test one";
onGenerateStringListener.onGeneratedString(a);
// Sleep 10 secs
Thread.sleep(10000);
String b = "test Two";
onGenerateStringListener.onGeneratedString(b);
// Sleep 10 secs
Thread.sleep(10000);
String c = "test Three";
onGenerateStringListener.onGeneratedString(c);
}
private void onStartGenerateStringFragment() {
//Method to launch your fragment
}
interface OnGenerateStringListener {
void onGeneratedString(String string);
}
}
这是你的片段
课程:
public class FragmentTextView extends Fragment implements MainActivity.OnGenerateStringListener{
private View view;
private TextView textViewOne;
private TextView textViewTwo;
private TextView textViewThree;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
if (view != null) {
ViewGroup group = (ViewGroup) view.getParent();
if (group != null) {
group.removeView(view);
}
} else {
view = inflater.inflate(R.layout.fragment_layout, container, false);
textViewOne = view.findViewById(R.id.textViewOne);
textViewTwo = view.findViewById(R.id.textViewTwo);
textViewThree = view.findViewById(R.id.textViewThree);
}
return view;
}
@Override
public void onGeneratedString(String string) {
switch (string) {
// Use a switch case to determine which text view gets what parameters
// for the sake of the example, I just passed a dummy text view input
case "test one":
textViewOne.setText(string);
break;
case "test Two":
textViewTwo.setText(string);
break;
case "test Three":
textViewThree.setText(string);
break;
}
}
}
它可以通过在活动中使用接口来实现,并在生成字符串时将该参数传递给片段:
public class MainActivity extends AppCompatActivity {
private OnGenerateStringListener onGenerateStringListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
onGenerateStringListener = (OnGenerateStringListener) this;
onStartGenerateStringFragment();
try {
generateString();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
private void generateString() throws InterruptedException {
// After string a is generated
String a = "test one";
onGenerateStringListener.onGeneratedString(a);
// Sleep 10 secs
Thread.sleep(10000);
String b = "test Two";
onGenerateStringListener.onGeneratedString(b);
// Sleep 10 secs
Thread.sleep(10000);
String c = "test Three";
onGenerateStringListener.onGeneratedString(c);
}
private void onStartGenerateStringFragment() {
//Method to launch your fragment
}
interface OnGenerateStringListener {
void onGeneratedString(String string);
}
}
这是你的片段
课程:
public class FragmentTextView extends Fragment implements MainActivity.OnGenerateStringListener{
private View view;
private TextView textViewOne;
private TextView textViewTwo;
private TextView textViewThree;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
if (view != null) {
ViewGroup group = (ViewGroup) view.getParent();
if (group != null) {
group.removeView(view);
}
} else {
view = inflater.inflate(R.layout.fragment_layout, container, false);
textViewOne = view.findViewById(R.id.textViewOne);
textViewTwo = view.findViewById(R.id.textViewTwo);
textViewThree = view.findViewById(R.id.textViewThree);
}
return view;
}
@Override
public void onGeneratedString(String string) {
switch (string) {
// Use a switch case to determine which text view gets what parameters
// for the sake of the example, I just passed a dummy text view input
case "test one":
textViewOne.setText(string);
break;
case "test Two":
textViewTwo.setText(string);
break;
case "test Three":
textViewThree.setText(string);
break;
}
}
}
你为什么不让片段处理这个功能呢?是的,我只是觉得他在问如何更改TextView中的文本如果我尝试在活动中从片段中找到findviewbyid,我得到Null我相信转换到(TextView)现在是多余的是,我写这篇文章是因为我不确定他们有什么版本的Android Studio,为什么你不让fragments来处理这个功能?是的,我想他是在问如何更改TextView中的文本如果我尝试在活动中从fragments中找到findviewbyid,我得到Null我相信casting to(TextView)现在是多余的了是的,我写这篇文章是因为我不确定他们有什么版本的Android Studio