gpt4 book ai didi

java - 我在 Android 中使用类对象启动 Activity 时遇到问题

转载 作者:行者123 更新时间:2023-12-01 09:00:30 25 4
gpt4 key购买 nike

所以我正在关注 thenewboston 的 Android 教程。我了解了如何使用 Intent 开始一项 Activity 。但是,当使用类对象创建新 Activity 时,类名在 Class.forname() 方法中无法被识别。但是如果我直接使用Intent创建的话,找到类就没有问题了。但是使用这个,使用相同的类路径,我遇到了 java.lang.ClassNotFoundException`包名称- com.hello.myproject;

  import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;


public class Menu extends ListActivity{
String []classes={"MainActivity","example1","example2","example3","example4","example5","example6"};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(Menu.this,android.R.layout.simple_list_item_1,classes));
}

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);

Class myclass=Class.forName("com.hello.myproject.MainActivity");//This class name is not being found, but if I copy the same path inside Intent() it has no problem and yes there is a class called MainActivity
Intent myintent=new Intent(Menu.this,myclass );
startActivity(myintent);
}
}

list 文件

<?xml version="1.0" encoding="utf-8"?>

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".splash">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="com.hello.myproject.MAINACTIVITY" />

<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".Menu">
<intent-filter>
<action android:name="com.hello.myproject.MENU" />

<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".TextPlay">
<intent-filter>
<action android:name="com.hello.myproject.TEXTPLAY" />

<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>

最佳答案

纳拉扬·帕约尔

仅当您在 manifest.xml 文件的 Activity 标记内添加了 intent-filter 时,用于启动 Activity 的语法才有效。

例如:

如果你正在做,

Class myclass = Class.forName("com.hello.myproject.MAINACTIVITY");
Intent myintent = new Intent(Menu.this,myclass );
startActivity(myintent);

您必须在 list 文件中使用 intent-filter 声明此 Activity

<activity
android:name="com.hello.myproject.MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="com.hello.myproject.MAINACTIVITY" />

<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

正如大家所建议的,您可以只使用类名。

Intent myIntent = new Intent(this, MainActivity.class);
startActivity(myIntent);

更新:

当您想在列表项单击上打开不同的不同 Activity 时,您可以这样做。我不确定,但它应该可以工作。

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);

Class myclass = Class.forName("com.hello.myproject." + classes[position]);
Intent myintent = new Intent(Menu.this,myclass );
startActivity(myintent);
}

快乐编码...

关于java - 我在 Android 中使用类对象启动 Activity 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41714692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com