如何在其他项目中调用项目的活动?

时间:2015-06-23 08:48:24

标签: android

我是初学者,我尝试在当前项目(项目A)中调用上一个项目(项目B)的活动。 我在项目A中使用此代码来调用项目B

    package com.example.demo1;
    import android.app.Activity;
    import android.content.ComponentName;
    import android.content.Intent;
    import android.content.pm.PackageManager;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View; 
    import android.widget.Button;

    public class MainActivity extends Activity {
    Button b1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        b1=(Button)findViewById(R.id.btn1);
        b1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent i = new Intent(Intent.ACTION_MAIN);
            i.setComponent(new ComponentName("com.example.demo2", ".NAvActivity"));
            i.addCategory(Intent.CATEGORY_LAUNCHER);
            startActivity(i);
        }
    });
  }

   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}
}

项目B的表现文件如下              

<uses-sdk
    android:minSdkVersion="17"
    android:targetSdkVersion="17" />

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

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

但我无法导航到另一个班级。帮我解决一下。

3 个答案:

答案 0 :(得分:0)

你可以试试这个,

    Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setComponent(new ComponentName("com.example.demo2","com.example.demo2.NAvActivity"));
startActivity(intent);

你的清单应该是这样的,

<intent-filter>
  <action android:name="com.example.demo2.NAvActivity"/>
  <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

答案 1 :(得分:0)

尝试使用如下所示的包启动具有完整班级名称的活动....

Intent intent = new Intent();
intent.setComponent(new ComponentName("com.example", "com.example.MyExampleActivity"));
startActivity(intent);

第1步:使用自定义操作在<intent-filter>中将AndroidMenifest.xml添加到项目B活动中:

<intent-filter>
  <action android:name="com.example.CUSTOM_ACTION"/>
  <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

步骤2:使用项目A中的适当Intent开始该活动:

startActivity(new Intent("com.example.CUSTOM_ACTION"));

答案 2 :(得分:0)

尝试使用像这样

Intent i = new Intent(Intent.ACTION_MAIN);
    i.setComponent(new ComponentName("com.demo.status",
            "com.demo.status.MainActivity"));

    startActivity(i);