Java android.content.ActivityNotFoundException:找不到显式活动类{您是否在AndroidManifest.xml中声明了此活动?

Java android.content.ActivityNotFoundException:找不到显式活动类{您是否在AndroidManifest.xml中声明了此活动?,java,android,android-manifest,android-fragmentactivity,insert-update,Java,Android,Android Manifest,Android Fragmentactivity,Insert Update,我有这些错误 android.content.ActivityNotFoundException:找不到显式活动类{};您是否在AndroidManifest.xml中声明了此活动? 在android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2005)上 位于android.app.Instrumentation.execStartActivity(Instrumentation.java:1673) 在

我有这些错误

android.content.ActivityNotFoundException:找不到显式活动类{};您是否在AndroidManifest.xml中声明了此活动? 在android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2005)上 位于android.app.Instrumentation.execStartActivity(Instrumentation.java:1673) 在android.app.Activity.startActivityForResult(Activity.java:4586)上 位于androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:676) 位于androidx.core.app.ActivityCompat.startActivityForResult(ActivityCompat.java:234) 位于androidx.fragment.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:791) 在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) 在com.example.gerobokgo.AccountFragment.openUpdateProfile(AccountFragment.java:110)上 位于com.example.gerobokgo.AccountFragment.access$000(AccountFragment.java:29) 位于com.example.gerobokgo.AccountFragment$2.onClick(AccountFragment.java:93)

我在这些
code
上有
错误

// 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);

    }
雄激素单

<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

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));


                }
            }
        });
    }
}



公共类UpdateProfileFragment扩展片段实现View.OnClickListener{
编辑文本电视名称、电视电子邮件、电视主页、电视电话;
按钮btn_更新;
FirebaseAuth FirebaseAuth;
FirebaseUser当前用户;
数据库参考数据库参考;
公共更新profilefragment(){
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图=充气机。充气(R.layout.fragment\u update\u profile,container,false);
//从intert获取数据(上一页的数据)
Intent Intent=getActivity().getIntent();
字符串名称=intent.getStringExtra(“名称”);
字符串email=intent.getStringExtra(“电子邮件”);
字符串地址=intent.getStringExtra(“发货地址”);
String phone=intent.getStringExtra(“电话号码”);
//伊尼
firebaseAuth=firebaseAuth.getInstance();
currentUser=firebaseAuth.getCurrentUser();
databaseReference=FirebaseDatabase.getInstance().getReference(“客户”).child(firebaseAuth.getUid());
tv_name=view.findviewbyd(R.id.tv_name);
tv_email=view.findviewbyd(R.id.tv_email);
tv\u home=view.findviewbyd(R.id.tv\u home);
tv\u phone=view.findviewbyd(R.id.tv\u phone);
tv_name.setText(名称);
tv_email.setText(电子邮件);
tv_home.setText(地址);
tv_phone.setText(电话);
btn_update.setOnClickListener(此);
返回视图;
}
@凌驾
公共void onClick(视图){
}
私有void updateProfile(){
Intent Intent=getActivity().getIntent();
字符串userUid=firebaseAuth.getCurrentUser().getUid();
String name=tv_name.getText().toString().trim();
字符串email=tv_email.getText().toString().trim();
String home=tv_home.getText().toString().trim();
字符串phone=tv_phone.getText().toString().trim();
Customer cust=新客户(userUid、姓名、电子邮件、主页、电话);
databaseReference.child(“客户”).child(userUid).setValue(cust).addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
Toast.makeText(getActivity(),“更新成功”,Toast.LENGTH_SHORT.show();
getActivity().finish();
startActivity(新意图(getActivity(),AccountFragment.class));
}
}
});
}
}

根据您的代码UpdateProfileFragmentopenUpdateProfile方法中的活动

在使用之前,您应该在AndroidManifest中声明UpdateProfileFragment活动

编辑:

由于UpdateProfileFragment是fragment,所以您通过startActivity()以错误的方式调用fragment-

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();

}
在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.
    ...
    ...
@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.
        ...
        ...
}
}


注意:如果UpdateProfileFragment是片段,则无需在清单文件中声明。

根据您的说法,UpdateProfileFragment是片段

因此,您不能通过
startActivity()
调用
fragment
。要从活动调用
fragemnt
,您必须执行以下操作

UpdateProfileFragment frag = new UpdateProfileFragment ();
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.fragmentContainer,frag,"Test Fragment");
transaction.commit();
此外,您还可以使用
setArguments
将数据传递到
fragment

示例:

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();

    }
在您的
片段中
可以获得
数据
,如下所示

  @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.
    ...
    ...
@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.
        ...
        ...
}

希望它能帮助您。

UpdateProfileFragment
活动还是片段?您是否在
AndroidManifest
中注册了它?UpdateProfileFragment是一个片段。我想它会自动生成???我应该这样声明吗?是的,@lilin在AndroidManifest文件中声明,正如你所提到的,并确保UpdateProfileFragment将扩展到Activity而不是fragment。如何扩展到Activity?你能共享UpdateProfileFragment的代码吗?对于扩展:UpdateProfileFragment扩展AppCompativityDone。我在上面分享过。希望你能帮我,先生:)我应该在