[英]How can I add data from one of my fragments, and pass it to my adapter, and set it to my array list?
[英]How can i pass data into my fragments to my view?
你好,我是 android studio 的新手,我刚刚创建了我的片段,想创建一个随机化数字的按钮。 它在我做片段之前就工作了,现在我根本不知道如何输入我以前使用的相同代码但是..它似乎没有找到我的文本视图或按钮的 ID
package com.example.thesapplikation;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import java.util.Random;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
public class RandomFragment extends Fragment {
@Nullable
@Override
public View onCreateView (LayoutInflater inflater, @Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_home,container,false);
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Random myRandom = new Random();
Button buttonGenerate = (Button) findViewById(R.id.generate);
final TextView textGenerateNumber=(TextView)findViewById(R.id.generatenumber);
buttonGenerate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textGenerateNumber.setText(String.valueOf(myRandom.nextInt(100)));
}
});
}
}
这与@Mike 所说的答案相同。 Fragment 的生命周期方法与 Activity 的生命周期方法不同,您可以从此处获取更多信息。
OnCreate
在OnCreateView
之前调用,因此您无法访问OnCreate
方法内的片段视图。 移动你在OnViewCreated
所做的一切。 所以你的片段代码将是
public class RandomFragment extends Fragment {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Nullable
@Override
public View onCreateView (LayoutInflater inflater, @Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_home,container,false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Button buttonGenerate = (Button) view.findViewById(R.id.generate);
final TextView textGenerateNumber=(TextView)view.findViewById(R.id.generatenumber);
final Random myRandom = new Random();
buttonGenerate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textGenerateNumber.setText(String.valueOf(myRandom.nextInt(100)));
}
});
}
}
您的代码应该在 onCreateView() 内。 在这里,它应该是什么样子的。
public class RandomFragment extends Fragment {
@Nullable
@Override
public View onCreateView (LayoutInflater inflater, @Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {
final Random myRandom = new Random();
View root = inflater.inflate(R.layout.fragment_home,container,false);
Button buttonGenerate = root.findViewById(R.id.generate);
final TextView textGenerateNumber = root.findViewById(R.id.generatenumber);
buttonGenerate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textGenerateNumber.setText(String.valueOf(myRandom.nextInt(100)));
}
});
return root;
}
}
我希望这有效,对我有用。 祝你好运! ☺️
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.