在活动中启动活动

时间:2013-09-15 12:54:53

标签: android eclipse android-intent

我正在尝试在Eclipse中创建Android应用程序,该应用程序应包含2个活动:第一个用户填写字段的活动和第二个活动,应该通过在第一个活动中按一个按钮来启动。

我已经阅读了许多关于意图的主题,收到了关于意图过滤器的所有可能信息,但我仍然不能只创建一个按钮并使用意图来启动活动。

请帮助。

如果您有类似于逐步说明的方法,那将会很棒。

好的,这就是我按照你的答案做的 - >

我创建了一个应用程序。 src中有4个java文件:
Activity1.java - 我希望有一个按钮来启动Activity2的活动,
Activity2.java - 处于默认状态,
MyActivity.java - 创建用于粘贴1Up收到的代码,
View.java - 我创建的空类,因为没有它我看到很多错误,不知道如何正常删除它们。

然后我将1Up的代码放在MyActivity中,略微编辑它,这就是我所拥有的:

public class Activity1<i> extends Activity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity1, menu);
    return true;
}
public void onCreate() {
    // TODO Auto-generated method stub

}

    public void goToOtherActivity(View view)
    {
        Intent i = new Intent(this, Activity2.class);
        this.startActivity(i);
    }                                        }

然后我想我现在可以将goToOtherActivity附加到onClick上,但它只能像文本一样添加,所以当我在AVD上启动app时会发出很多警告

3 个答案:

答案 0 :(得分:2)

假设您想在某个事件触发时(点击时)启动新活动

这里是XML布局,例如

<LinearLayout
        android:id="@+id/start_btn"
        android:layout_width="75.0dip"
        android:layout_height="27.0dip"
        android:layout_marginRight="35.0dip"
        android:background="@drawable/green_btn"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        android:paddingBottom="2.0dip"
        android:paddingLeft="8.0dip" >

        <ImageView
            android:id="@+id/start_image"
            android:layout_width="9.0dip"
            android:layout_height="14.0dip"
            android:src="@drawable/start_icon" />

        <TextView
            android:id="@+id/start_caption"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_marginLeft="5.0dip"
            android:gravity="center_vertical"
            android:text="Start Activity"
            android:textColor="#ffffffff"
            android:textStyle="bold" />
    </LinearLayout>

Intent可用于启动新活动

LinearLayout lBtn = (LinearLayout) findViewById(R.id.start_btn);
lBtn.setOnClickListener(new View.OnClickListener() {
     @Override public void onClick(View arg0) {
     Intent mAct = new Intent(this, ActivtyClass.class);
     startActivity(mAct);
    } });

答案 1 :(得分:2)

您可以为新活动创建意图,添加任何额外内容,并通过上下文启动活动:

Intent i = new Intent(context, MyOtherActivity.class);   //Initialize the Intent
i.putExtra("firstExtra", value);         //Put any extra you want
i.putExtra("secondExtra", secondValue);  //Remember the key you used
context.startActivity(i);      //Start the activity with the given intent

您可以将其放在按钮的onClick事件中:

public void goToOtherActivity(View view)
{
    //CODE HERE
}

并在xml中定义按钮,如下所示:

<Button android:id="@+id/btnGo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="goToOtherActivity"
    />

然后在另一个活动中,您可以抓住额外内容并使用它们做任何您想做的事情:

@Override
public void onCreate(Bundle savedInstanceState)
{
    Intent i = getIntent();   //Get the intent used to run this Activity
    Bundle b = i.getExtras(); //Get all the extras
    String firstExtra = b.getString("firstExtra"); //Get one String extra with key "firstExtra"
    int secondExtra = b.getInt("secondExtra"); //Get one Integer extra with key "secondExtra"
    //USE YOUR DATA
}

编辑:

当我说把代码放在那个方法里面时我打算做这样的事情:

public class MyActivity extends Activity{

    @Override
    public void onCreate()
    {
        super.onCreate();
        //onCreate code here
    }

    public void goToOtherActivity(View view)
    {
        Intent i = new Intent(this, SecondActivity.class);
        this.startActivity(i);
    }
}

答案 2 :(得分:1)

您可以按照以下方式启动活动

Intent intent= new Intent(YourFirstActivity.this, YourSecondActivty.class);
startActivity(intent);

如果你想要一些结果回到第一个活动

你应该从

开始
startActivityForResult(intent);

并实施onActivityResult

这样做 在你的xml中设置onClick="onClick"

<Button android:id="@+id/Button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="onClick"/>

然后在你的java

public void onClick(View view)
{
    Intent intent= new Intent(YourFirstActivity.this, YourSecondActivty.class);
    startActivity(intent);
}

developer.android.com

了解详情