【问题标题】:Android intent to other ActivityAndroid 对其他 Activity 的意图
【发布时间】:2014-11-05 10:53:59
【问题描述】:

我想从当前活动转发到其他活动。但是当我单击按钮时,我无法执行它。我想从 MainActivity 移动到 FeedActivity 请告诉我的代码有什么问题。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.sample.test.MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginLeft="53dp"
        android:layout_marginTop="92dp"
        android:text="Button" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/button1"
        android:layout_marginLeft="20dp"
        android:layout_toRightOf="@+id/button1"
        android:text="@string/button2" />

</RelativeLayout>

MainActivity.java

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btn = (Button) findViewById(R.id.button1);
        Button btn2 = (Button) findViewById(R.id.button2);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                Toast.makeText(getApplicationContext(),
                        "Welcome to android by Vivek", Toast.LENGTH_LONG)
                        .show();

            }
        });

        btn2.setOnClickListener(new OnClickListener() {

            public void onClick(View view) {
                Intent intent = new Intent(view.getContext(), FeedActivity.class);
                startActivity(intent);
            }

        });
    }

}

【问题讨论】:

  • 而不是view.getContext(), 使用MainActivity.this
  • 如果我使用 MainActivity.this 它会给出错误,因为它不允许在 onClick 中
  • instead of view.getContext(), use MainActivity.this 是为了什么? ...问题是:你点击右键了吗?
  • 为了指定当前类,是的,我点击了正确的
  • 您在尝试开始新活动时是否有任何异常?你的日志里有什么?

标签: java android android-intent


【解决方案1】:

当你创建一个新的 Intent 实例时,你需要给它两个参数:

  • 当前活动类实例
  • 转到活动类实例

另外,您需要导入视图库或使用您的new OnClickListener 作为new View.OnClickListener

您可以通过将其添加到导入来做到这一点:

import android.view.View;
import android.view.View.OnClickListener;

将您的 btn2.onClickListener 更改为:

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

【讨论】:

  • 大声笑,view.getContext() == MainActivity.this(或者它是 ContextThemeWrapper 但仍然没关系,在这个地方使用 view.getContext() 是有效的)问题不在这里!
  • 我已经成功运行了这段代码,你能提供你完整的MainActivity类代码吗? activity_main.xml 还包含 button2 文本的字符串元素。你有没有为此输入字符串变量?
猜你喜欢
  • 1970-01-01
  • 2021-02-16
  • 2022-06-15
  • 1970-01-01
  • 2016-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多