【发布时间】:2020-05-19 17:57:40
【问题描述】:
如何从片段的参数中获取数据?我从 MainActivity 调用片段 函数RegistrationCallFragment()
fun RegistrationCallFragment(){
val extras = getIntent().getExtras();
if(extras != null) {
val bundle = Bundle()
bundle.putString("phone", extras.getString("phone", ""))
bundle.putString("email", extras.getString("email", ""))
bundle.putString("password", extras.getString("password", ""))
Registration_second.getNewInstance(args = bundle)
}
}
并将所有数据放入伴随对象的片段参数中
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)
//}
}
还有这个
bundle.putString("phone",
FragmentManager.findFragment<SecondFragment>(View(this)).view?.findViewById<EditText>(R.id.phone_signup)?.text.toString()
)
让我的应用崩溃。我做错了什么?
MainActivity 中的代码
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)
}
}
fragment_second.xml 中的编辑文本
<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)
}
日志
【问题讨论】:
标签: java android android-fragments kotlin android-activity