java - 只需触摸屏幕即可启动新 Activity

标签 java android

我正在尝试启动一个全新的 Activity ,当我触摸屏幕时,它将显示一个新的字符串。这是主 Activity 代码。我的第一个 Activity 显示“hello world”,而我的新 Activity 应该只显示一个新字符串。所有资源文件和 list 都是正确的。但是,在 onClick 之后运行一直崩溃。

package com.example.myfirsttest;

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


public class MainActivity extends Activity{

    @Override
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.activity_main);
    
    
    //Call the NewActivity from the MainActivity
        View view = getWindow().getDecorView().findViewById(android.R.id.content);
        view.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                Intent startIntent = new Intent(MainActivity.this,NewActivity.class);
                startActivity(startIntent);
                
            }
        }); 
    }
}

最佳答案

有更好的方法来实现这一点

package com.example.myfirsttest;

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


public class MainActivity extends Activity{
private static final String MESSAGE_TAG = "my_message";

    @Override
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.activity_main);
    Bundle extras = getIntent().getExtras();
    String stringMessage = extras.getString(MESSAGE_TAG);
    TextView message = (TextView) findViewById(R.id.message);
    if(stringMessage != null && !stringMessage.isEmpty()) {
       message.setText(stringMessage);
    }


    //Call the NewActivity from the MainActivity
        View view = getWindow().getDecorView().findViewById(android.R.id.content);
        view.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent startIntent = new Intent(MainActivity.this,MainActivity.class);
                startIntent.putExtra(MESSAGE_TAG, "hello second World");
                startActivity(startIntent);

            }
        }); 
    }
}

现在您不需要为同一任务注册 2 个 Activity ,这是布局

 <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:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MyActivity">

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

</RelativeLayout>

关于java - 只需触摸屏幕即可启动新 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25575522/

相关文章:

java - 从字符串创建 android.graphics.Path 对象

java - 相机X : setTargetResolution() does not work on some devices

android - 如何正确使用Realm

android - 如何比较 2 个地点位置

Java回溯问题

Java 和 SSH 希望从一个文件执行多个命令,跨另一个文件中的主机列表并将输出写入文件

java - 如何在github上发布java项目?

java - 最后选择的选项将转到微调器选项的顶部

java - Android PackageStats 始终为零

android - 如何使用 SHOW_OR_CREATE_CONTACT 操作正确设置 android Intent ?