Android:未找到 Activity 来处理 Intent(正在尝试向现有应用添加 activity)

Android: No Activity found to handle Intent (trying to add an activity to exsisting app)

好的,所以我是 Android 编程的新手,我正在开始这个 class 的第 2 周,我无法弄清楚哪里出了问题。我有 read/watched 大量关于添加新活动的教程,但没有任何效果。

作业:使用“活动”应用并添加第四个 activity

我的 activity 很简单,3 个按钮和一张图片。一个按钮使图像可见,另一个按钮使其不可见。第三次returns回主

注意:我将原始应用程序编辑为在 Main Activity 上有按钮,因为它让我在我发现愚蠢的 d-pad 上点击中心。另一个注意事项是 Activity 2 和 3 使用相同的布局,据我所知做的事情基本相同

public class MainActivity extends Activity {
String tag = "Events";

int request_Code = 1;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //---hides the title bar---
    //requestWindowFeature(Window.FEATURE_NO_TITLE);

    setContentView(R.layout.main);
    Log.d(tag, "In the onCreate() event");

    Button act2Butt = (Button) findViewById(R.id.act2Butt);
    Button act3Butt = (Button) findViewById(R.id.act3Butt);
    Button act4Butt = (Button) findViewById(R.id.act4Butt);

    act2Butt.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            startActivityForResult(new Intent("net.learn2develop.ACTIVITY2"), request_Code);
        }
    });

    act3Butt.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            startActivityForResult(new Intent("net.learn2develop.ACTIVITY2"), request_Code);
        }
    });

    act4Butt.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            startActivityForResult(new Intent("net.learn2develop.MYACTIVITY"), request_Code);
        }
    });
}
/*
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER)
    {
        //startActivity(new Intent("net.learn2develop.ACTIVITY2"));    
        //startActivity(new Intent(this, Activity2.class));

        startActivityForResult(new Intent(
            "net.learn2develop.ACTIVITY2"), 
            request_Code);

    }
    return false;
}
*/

public void onActivityResult(int requestCode, int resultCode, Intent data)
{
    if (requestCode == request_Code) {
        if (resultCode == RESULT_OK) {                
            Toast.makeText(this,data.getData().toString(), 
                Toast.LENGTH_LONG).show();
        }            
    }
} 

public void onStart()
{
    super.onStart();
    Log.d(tag, "In the onStart() event");
}    
public void onRestart()
{
    super.onRestart();
    Log.d(tag, "In the onRestart() event");
}    
public void onResume()
{
    super.onResume();
    Log.d(tag, "In the onResume() event");
}
public void onPause()
{
    super.onPause();
    Log.d(tag, "In the onPause() event");
}    
public void onStop()
{
    super.onStop();
    Log.d(tag, "In the onStop() event");
}    
public void onDestroy()
{
    super.onDestroy();
    Log.d(tag, "In the onDestroy() event");
}    

public class MyActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity4);

    Button yesButt = (Button) findViewById(R.id.yesButton);
    Button noButt = (Button) findViewById(R.id.noButton);
    Button finButt = (Button) findViewById(R.id.finButton);
    final ImageView img1 = (ImageView) findViewById(R.id.image1);


    yesButt.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            img1.setVisibility(View.VISIBLE);
        }
    });
    noButt.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            img1.setVisibility(View.INVISIBLE);
        }
    });
    finButt.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            Intent data = new Intent();
            data.setData(Uri.parse("OMG IT WORKS"));
            setResult(RESULT_OK, data);

            finish();
        }
    });
}

public class Activity2 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity2);

    String defaultName=""; 
    Bundle extras = getIntent().getExtras();
    if (extras!=null)
    {
        defaultName = extras.getString("Name");        
    }
    //---get the EditText view--- 
    EditText txt_username = 
        (EditText) findViewById(R.id.txt_username);        
    txt_username.setHint(defaultName);

    //---get the OK button---
    Button btn = (Button) findViewById(R.id.btn_OK);

    //---event handler for the OK button---
    btn.setOnClickListener(new View.OnClickListener() 
    {
        public void onClick(View view) {
            Intent data = new Intent();

            //---get the EditText view--- 
            EditText txt_username = 
                (EditText) findViewById(R.id.txt_username);

            //---set the data to pass back---
            data.setData(Uri.parse(
                txt_username.getText().toString()));                           
            setResult(RESULT_OK, data);

            //---closes the activity---
            finish(); 
        }
    });  
}

我已经输入了 Main Activity、我的 Activity(我制作的那个)和 Activity 2 的代码。我的 Activity 运行良好并且完全正确我想要它做什么,但如果我尝试从 main 访问它,它就会死掉。

928-928/net.learn2develop.Activities E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: net.learn2develop.Activities, PID: 928 android.content.ActivityNotFoundException: No Activity found to handle Intent { act=net.learn2develop.MYACTIVITY } at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1765) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1485) at android.app.Activity.startActivityForResult(Activity.java:3736) at android.app.Activity.startActivityForResult(Activity.java:3697) at net.learn2develop.Activities.MainActivity.onClick(MainActivity.java:48) at android.view.View.performClick(View.java:4756) at android.view.View$PerformClick.run(View.java:19749) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

此代码是我最后一次尝试并在我举手之前让它工作的代码。我做的最后一件事是让我的 Activity 像另一个一样运行并使用 startActivityForResult.

任何帮助都会有很大帮助。我不知道这是否重要,但我在 bin 目录中没有 .class 用于我的 Activity,但有一个用于所有其他的。

如果您需要更多信息,请直接询问。

就像我之前说的,我对整个 Android 领域真的很陌生。

编辑:清单

<activity android:name=".MyActivity"
              android:label="My Activity">
        <intent-filter>
            <action android:name="net.learn2develop.MYACTIVITY" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
     </activity>

您需要将 activity 添加到清单中

<activity 
    android:name=".MySecondActivity" 
    android:label="@string/title_second_activity">
</activity>

您可能需要将 Activity 添加到清单中。如果你确定你已经这样做了,我建议使用稍微不同的 Intent

尝试按以下方式使用 Intent

Intent intent = new Intent(MyActivity.this, SecondActivity.class);
startActivityForResult(intent, requestCode);

这个Intent的第一个参数就是当前的Activity。第二个参数是您希望导航到的Activity。以这种方式处理 Intent 可以防止包名称中的小拼写错误引发该异常。只要您尝试导航到的 Activity 在清单中,并且您已经像上面的代码一样设置了 Intent,一切都应该正常。

祝你好运,编码愉快!

net.learn2develop.MYACTIVITY

Android 没有像其他工程师所说的那样找到上面的 activity,在你的清单文件中添加这个 activity 这样 JVM 就可以找到你所指的 class .