Java 从片段的参数获取数据
如何从片段的参数中获取数据?我调用MainActivity中的片段 函数注册CallFragment() 并将所有数据放在frgament的参数中,指向同伴对象Java 从片段的参数获取数据,java,android,android-fragments,kotlin,android-activity,Java,Android,Android Fragments,Kotlin,Android Activity,如何从片段的参数中获取数据?我调用MainActivity中的片段 函数注册CallFragment() 并将所有数据放在frgament的参数中,指向同伴对象 fun getNewInstance(args: Bundle): Registration_second{ val registrationSecond = Registration_second() registrationSecond.arguments = args
fun getNewInstance(args: Bundle): Registration_second{
val registrationSecond = Registration_second()
registrationSecond.arguments = args
return registrationSecond
}
}
如何从伴星对象获取这些数据
所以,我找到了一些东西,并在我的应用程序中执行
在这个函数中
fun RegistrationCallFragment(){
fun RegistrationCallFragment(){
//val extras = getIntent().getExtras();
//if(extras != null) {
//val s =extras?.getString("phone", "")
val bundle = Bundle()
bundle.putString("phone",
FragmentManager.findFragment<SecondFragment>(View(this)).view?.findViewById<EditText>(R.id.phone_signup)?.text.toString()
)
bundle.putString("email",
FragmentManager.findFragment<SecondFragment>(View(this)).view?.findViewById<EditText>(R.id.email_signup)?.text.toString()
)
bundle.putString("password",
FragmentManager.findFragment<SecondFragment>(View(this)).view?.findViewById<EditText>(R.id.pasword_signup)?.text.toString()
)
Registration_second.getNewInstance(args = bundle)
//}
}
日志
在您的
注册中
fragmentonCreate
方法从参数获取数据,如下代码所示:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
val phone = it.getStringExtra("phone")
val email = it.getStringExtra("email")
val password = it.getStringExtra("passsword")
}
}
在膨胀片段布局之前,移除正在显示的吐司
bundle.putString("phone",
FragmentManager.findFragment<SecondFragment>(View(this)).view?.findViewById<EditText>(R.id.phone_signup)?.text.toString()
)
import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.EditText
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.FragmentManager
import androidx.navigation.fragment.NavHostFragment.findNavController
import androidx.navigation.fragment.findNavController
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
fun toastMe(Str: String) {
val myToast = Toast.makeText(this,Str, Toast.LENGTH_SHORT)
myToast.show()
}
fun RegistrationCallFragment(){
val bundle = Bundle()
bundle.putString("phone",
FragmentManager.findFragment<SecondFragment (View(this)).view?.findViewById<EditText>(R.id.phone_signup)?.text.toString()
)
bundle.putString("email",
FragmentManager.findFragment<SecondFragment>(View(this)).view?.findViewById<EditText>(R.id.email_signup)?.text.toString()
)
bundle.putString("password",
FragmentManager.findFragment<SecondFragment>(View(this)).view?.findViewById<EditText>(R.id.pasword_signup)?.text.toString()
)
Registration_second.getNewInstance(args = bundle)
}
}
<EditText
android:id="@+id/phone_signup"
android:layout_width="200dp"
android:layout_height="40dp"
android:hint="@string/phone"
android:textColorHint="@color/grey"
android:textColor="@color/black"
android:background="@drawable/input_text"
android:layout_gravity="center"
android:layout_marginBottom="85dp"
android:gravity="center"
android:ems="10"
android:inputType="phone"
/>
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
//val extras = getIntent()?.getExtras();
//if(extras != null) {
// val phone = extras.getString("phone", "")
// val email = extras.getString("email", "")
// val password = extras.getString("password", "")
//return inflater.inflate(R.layout.fragment_registration_second, container, false)
val phone = arguments?.getString("phone", "")
val email = arguments?.getString("email", "")
val password = arguments?.getString("password", "")
Log.d("PHONE BLYAT", phone+email+password+"THis")
print(phone+email+password)
val activ = activity
(activ as MainActivity).toastMe(phone.toString())
return inflater.inflate(R.layout.fragment_registration_second, container, false)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
val phone = it.getStringExtra("phone")
val email = it.getStringExtra("email")
val password = it.getStringExtra("passsword")
}
}