当前位置: 首页 > 知识库问答 >
问题:

ActivityNotFoundException:找不到显式活动类{您在AndroidManifest.xml中声明了此活动吗?

马峻
2023-03-14

我犯了这些错误

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(activity.java:4586),在roidx.fragment.app.fragmentactivity$hostcallbacks.onstartactivityfromfragment(fragmentactivity.java:933)在Androidx.fragment.app.fragment.startactivity(fragment.java:1185)在Androidx.fragment.app.fragment.startactivity(fragment.java:1185)在Androidx.fragment.app.fragment.startactivity(fragment.java:1173)在

我在这些代码上出现错误

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

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


                }
            }
        });
    }
}



共有1个答案

孙泉
2023-03-14

根据您的说法,UpdateProfileFragment是一个片段。

所以不能通过startactivity()调用fragment。要从activity调用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 = 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.
        ...
        ...
}
 类似资料:
  • 问题内容: 我正在尝试在后台解压缩某些文件,因此我像在Google教程中一样使用IntentService。我在AndroidManifest中声明的服务类如下: 在活动中,我有 和服务在这里: 它应该显示吐司只是为了测试,但我总是收到一个错误: 两者(类和活动)都位于同一文件夹(org.osmdroid)中。似乎可以使用路径,但是问题出现了,我没有更多的想法了…… 问题答案: 您正在将服务作为活

  • 我还没有在网上找到解决方案。我的所有活动都是声明的,但Android Studio经常会告诉我它找不到它们。它并不总是发生,而且似乎是随机发生的。我已经清理、无效并重新启动、重建,有时这会得到修复,然后在一段时间后再次发生。我在这个项目的团队中工作,我似乎是唯一一个有bug的人: 这是我的毕业生

  • 本文向大家介绍C#标准活动声明,包括了C#标准活动声明的使用技巧和注意事项,需要的朋友参考一下 示例 事件声明: 事件处理程序声明: 订阅活动: 动态地: 通过设计师: 单击控件的属性窗口上的“事件”按钮(闪电) 双击事件名称: Visual Studio将生成事件代码: 调用方法:            

  • 以下是将使用此库的其他项目的文件 请注意: > 此库作为模块项目运行良好, 以下是我目前面临的流程和问题 > 我正在开发一个与特定条形码扫描器硬件通信的库的沙箱版本,因为开发人员不一定拥有他们将使用库的沙箱版本的硬件,该版本允许开发人员将其设备摄像机用作条形码扫描器, 我们希望开发人员从提供的中提取文件和并使用它们中的任何一个

  • 这是我运行应用程序时的清单文件,上面写着“主活动未在AndroidManifest.xml中声明” 我尝试重建,无效缓存/重启,添加 我昨天做了一个apk,直到那时它工作正常,但今天当我打开它时,它显示了这个错误。 以下是主要活动。JAVA logcat 2019-03-14 17:02:33.4925363-5363/com。基瓦尔。致命异常:AndroadCame。基瓦尔。拉格班达尔,PID:

  • 我有一个活动,我们称之为,它有一个。在适配器的代码中 当实际单击editOptionButton时,我得到以下堆栈跟踪 因此,我不知道为什么会出现这个错误,也不知道我能做什么。你们中有谁可能知道为什么或者以前经历过吗?