在 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);
我正在尝试在我的 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
开始一个新的activitypublic void startNewActivity() {
Intent intent = new Intent(mContext, MainActivity.class);
mContext.startActivity(intent);
}
此构造函数应该在另一个 class 中使用,也许是 activity,它已经引用了上下文:
new ImageAdapter(this, output);