[英]android.content.ActivityNotFoundException: Unable to find explicit activity class { have you declared this activity in your AndroidManifest.xml?
I'm having these error我有这些错误
android.content.ActivityNotFoundException: Unable to find explicit activity class {};
android.content.ActivityNotFoundException:无法找到显式活动 class {}; have you declared this activity in your AndroidManifest.xml?
您是否在 AndroidManifest.xml 中声明了此活动? at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2005) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1673) at android.app.Activity.startActivityForResult(Activity.java:4586) at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:676) at androidx.core.app.ActivityCompat.startActivityForResult(ActivityCompat.java:234) at androidx.fragment.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:791) at androidx.fragment.app.FragmentActivity$HostCallbacks.onStartActivityFromFragment(FragmentActivity.java:933) at androidx.fragment.app.Fragment.startActivity(Fragment.java:1185) at
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2005) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1673) at android.app.Activity.startActivityForResult(Activity.java:4586) at androidx.fragment. app.FragmentActivity.startActivityForResult(FragmentActivity.java:676) at androidx.core.app.ActivityCompat.startActivityForResult(ActivityCompat.java:234) at androidx.fragment.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:791) at androidx.fragment .app.FragmentActivity$HostCallbacks.onStartActivityFromFragment(FragmentActivity.java:933) 在 androidx.fragment.app.Fragment.startActivity(Fragment.java:1185) 在androidx.fragment.app.Fragment.startActivity(Fragment.java:1173) at com.example.gerobokgo.AccountFragment.openUpdateProfile(AccountFragment.java:110) at com.example.gerobokgo.AccountFragment.access$000(AccountFragment.java:29) at com.example.gerobokgo.AccountFragment$2.onClick(AccountFragment.java:93)
androidx.fragment.app.Fragment.startActivity(Fragment.java:1173) at com.example.gerobokgo.AccountFragment.openUpdateProfile(AccountFragment.java:110) at com.example.gerobokgo.AccountFragment.access$000(AccountFragment.java:29 ) 在 com.example.gerobokgo.AccountFragment$2.onClick(AccountFragment.java:93)
I'm having error
on these code
我对这些
code
有error
// For update and pass information method
private void openUpdateProfile() {
Intent intent= new Intent(getActivity(), UpdateProfileFragment.class);
//pass value from current to next page
intent.putExtra("name",tv_name.getText().toString().trim());
intent.putExtra("email", tv_email.getText().toString().trim());
intent.putExtra("Home Address",tv_home.getText().toString().trim());
intent.putExtra("Telephone", tv_phone.getText().toString().trim());
startActivity(intent);
}
public class AccountFragment extends Fragment
//For Update Method
btn_update.setOnClickListener( new View.OnClickListener(){
@Override
public void onClick(View view) {
openUpdateProfile();
}
AndroidManifest AndroidManifest
<application
android:name=".Home"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".RegisterActivity"
android:screenOrientation="portrait"></activity>
<activity android:name=".LoginActivity"
android:screenOrientation="portrait"/>
<activity
android:name=".splashScreen"
android:theme="@style/SplashScreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:theme="@style/AppTheme" />
</application>
UpdateProfileFragment.java更新ProfileFragment.java
public class UpdateProfileFragment extends Fragment implements View.OnClickListener {
EditText tv_name, tv_email, tv_home, tv_phone;
Button btn_update;
FirebaseAuth firebaseAuth;
FirebaseUser currentUser;
DatabaseReference databaseReference;
public UpdateProfileFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_update_profile, container, false);
//get data from intert (data from previous page)
Intent intent = getActivity().getIntent();
String name = intent.getStringExtra("Name");
String email = intent.getStringExtra("Email");
String address = intent.getStringExtra(" Shipping Address");
String phone = intent.getStringExtra("Telephone Number");
//ini
firebaseAuth = FirebaseAuth.getInstance();
currentUser = firebaseAuth.getCurrentUser();
databaseReference = FirebaseDatabase.getInstance().getReference("Customer").child(firebaseAuth.getUid());
tv_name = view.findViewById(R.id.tv_name);
tv_email = view.findViewById(R.id.tv_email);
tv_home = view.findViewById(R.id.tv_home);
tv_phone = view.findViewById(R.id.tv_phone);
tv_name.setText(name);
tv_email.setText(email);
tv_home.setText(address);
tv_phone.setText(phone);
btn_update.setOnClickListener(this);
return view;
}
@Override
public void onClick(View view) {
}
private void updateProfile() {
Intent intent = getActivity().getIntent();
String userUid = firebaseAuth.getCurrentUser().getUid();
String name = tv_name.getText().toString().trim();
String email = tv_email.getText().toString().trim();
String home = tv_home.getText().toString().trim();
String phone = tv_phone.getText().toString().trim();
Customer cust = new Customer(userUid, name, email, home, phone);
databaseReference.child("Customer").child(userUid).setValue(cust).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(getActivity(), "Update Successfully", Toast.LENGTH_SHORT).show();
getActivity().finish();
startActivity(new Intent(getActivity(), AccountFragment.class));
}
}
});
}
}
As per your Code UpdateProfileFragment is activity inside openUpdateProfile method.根据您的代码UpdateProfileFragment是openUpdateProfile方法内的活动。
You should declare the UpdateProfileFragment activity in AndroidManifest before using.您应该在使用前在AndroidManifest中声明 UpdateProfileFragment 活动。
Edit:编辑:
As UpdateProfileFragment is fragment, So you are calling in wrong way fragment by startActivity().由于 UpdateProfileFragment 是片段,因此您通过 startActivity() 以错误的方式调用片段。 To call fragemnt from activity do like following -
要从活动中调用片段,请执行以下操作 -
private void openUpdateProfile() {
Bundle bundle = new Bundle();
bundle.putString("name",tv_name.getText().toString().trim());
bundle.putString("email", tv_email.getText().toString().trim());
bundle.putString("home_address",tv_home.getText().toString().trim());
bundle.putString("telephone", tv_phone.getText().toString().trim());
UpdateProfileFragment updateFrag = new UpdateProfileFragment ();
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
updateFrag.setArguments(bundle);
transaction.add(R.id.fragmentContainer, updateFrag);
transaction.commit();
}
And in UpdateProfileFragment you can get data like following在 UpdateProfileFragment 中,您可以获得如下数据
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
String name = getArguments().getString("name");
String email = getArguments().getString("email");
String address= getArguments().getString("home_address");
String telephone= getArguments().getString("telephone");
// rest of your code here.
...
...
} }
NOTE: Incase of UpdateProfileFragment is fragment, no need of declare in manifest file.注意:如果 UpdateProfileFragment 是片段,则无需在清单文件中声明。
According to you, UpdateProfileFragment is a fragment.据你说,UpdateProfileFragment 是一个片段。
So you can't call fragment
by startActivity()
.所以你不能通过
startActivity()
调用fragment
。 To call fragemnt
from activity you have to do like following.要从活动中调用
fragemnt
,您必须执行以下操作。
UpdateProfileFragment frag = new UpdateProfileFragment ();
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.fragmentContainer,frag,"Test Fragment");
transaction.commit();
Also, you can pass data to fragment
using setArguments
此外,您可以使用
setArguments
将数据传递给fragment
Example:例子:
private void openUpdateProfile() {
Bundle bundle = new Bundle();
bundle.putString("name",tv_name.getText().toString().trim());
bundle.putString("email", tv_email.getText().toString().trim());
bundle.putString("home_address",tv_home.getText().toString().trim());
bundle.putString("telephone", tv_phone.getText().toString().trim());
UpdateProfileFragment frag = new UpdateProfileFragment ();
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
frag.setArguments(bundle);
transaction.add(R.id.fragmentContainer,frag,"Test Fragment");
transaction.commit();
}
And in your fragment
you can get data
like following在您的
fragment
中,您可以获得如下data
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
.....
String name = this.getArguments().getString("name");
String email = this.getArguments().getString("email");
String address= this.getArguments().getString("home_address");
String telephone= this.getArguments().getString("telephone");
// rest of your code here.
...
...
}
Hope it helps you.希望它可以帮助你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.