在 android 开始新的意图

Starting a new intent in android

我正在尝试在我的 class 中开始一个新的 activity。我不能打电话

startActivity(intent)

我需要为此延长 Activity 吗??如果是这样,如何?

已解决

startActivity() is a method on Context,因此您可以在继承自 Context 的 class 的任何对象上调用它。我们经常在现有的 Activity.

上调用 startActivity()

例如,这里我们有一个 Activity 调用 startActivity() 来启动另一个 activity:

/***
  Copyright (c) 2012 CommonsWare, LLC
  Licensed under the Apache License, Version 2.0 (the "License"); you may not
  use this file except in compliance with the License. You may obtain a copy
  of the License at http://www.apache.org/licenses/LICENSE-2.0. Unless required
  by applicable law or agreed to in writing, software distributed under the
  License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
  OF ANY KIND, either express or implied. See the License for the specific
  language governing permissions and limitations under the License.

  From _The Busy Coder's Guide to Android Development_
    http://commonsware.com/Android
*/

package com.commonsware.android.exint;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class ExplicitIntentsDemoActivity extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
  }

  public void showOther(View v) {
    startActivity(new Intent(this, OtherActivity.class));
  }
}

如果用户单击 res/layout/main.xml 中定义的 Button,将调用 showOther() 方法:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Button
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textSize="20sp"
        android:text="@string/hello"
        android:onClick="showOther"/>

</LinearLayout>

(来自 this sample project

这两种方法中的一种应该可行。如果你从另一个 activity 开始一个 activity 你需要做的就是

Intent intent = new Intent(thisActivity.this, nextActivity.class);
startActivity(intent);

其中 thisActivity 是当前 activity,nextActivity 是您要发布的新 activity。

如果您没有上下文,例如,如果您创建了自己的 class 而不会扩展 Activity,那么您仍然可以通过以下方式获取上下文它是构造函数的参数。

例如,在下面的示例中,构造函数获取对 Context

的引用
public class ImageAdapter extends BaseAdapter {
private Context mContext;
private ArrayList<HashMap<String, Object>> films;

public ImageAdapter(Context c, ArrayList<HashMap<String, Object>> o) {
    mContext = c;
    mFilms = o;
}

然后你可以从这个class

开始一个新的activity
public void startNewActivity() {
    Intent intent = new Intent(mContext, MainActivity.class);
    mContext.startActivity(intent);
}

此构造函数应该在另一个 class 中使用,也许是 activity,它已经引用了上下文:

new ImageAdapter(this, output);