将java文件用于对话框中使用的xml布局文件

时间:2016-06-27 14:30:50

标签: android android-layout

我需要使用.java文件来执行.xml布局的操作。我已将此布局用于对话框。我已将.java文件与该布局相关联,但它似乎根本不起作用。

这是MainActivity

package com.example.ayush.projectfive;
import android.content.DialogInterface;
import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

Button btn;
AlertDialog.Builder alrt;

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

    alrt = new AlertDialog.Builder(MainActivity.this);
    alrt.setIcon(R.mipmap.ic_launcher);
    alrt.setTitle("Login");
    alrt.setCancelable(false);
    alrt.setView(R.layout.mylayout);
    alrt.setPositiveButton("OK", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {

        }
    });
    alrt.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
        }
    });

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            alrt.show();
            Intent i = new Intent(MainActivity.this,Second.class);
            startActivity(i);
        }
    });
}
}

这是activity_main

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
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.example.ayush.projectfive.MainActivity">


<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="EXIT"
    android:id="@+id/button"
    android:layout_gravity="center_horizontal" />

这是对话框布局

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

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="LOGIN"
    android:id="@+id/textView"
    android:layout_gravity="center_horizontal" />

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="Username"
    android:layout_marginTop="20dp"
    android:id="@+id/editText" />

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="Password"
    android:layout_marginTop="15dp"
    android:inputType="textPassword"
    android:ems="10"
    android:id="@+id/editText2" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Login"
    android:layout_marginTop="20dp"
    android:id="@+id/button3" />

这是我想要链接的.java文件。

package com.example.ayush.projectfive;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Second extends AppCompatActivity{

EditText et, et2;
Button btn2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mylayout);
    et = (EditText) findViewById(R.id.editText);
    et2 = (EditText) findViewById(R.id.editText2);
    btn2 = (Button) findViewById(R.id.button3);
    btn2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String s1 = et.getText().toString();
            String s2 = et.getText().toString();
            if(s1.equals(s2)){
                Toast.makeText(Second.this, "Login Successful",      Toast.LENGTH_SHORT).show();
                Intent i = new Intent(Second.this,Third.class);
                startActivity(i);
            }
            else{

            }
        }
    });

}
}

2 个答案:

答案 0 :(得分:0)

只需在alrt.show();中添加MainActivity.java即可这里:

public class MainActivity extends AppCompatActivity {

Button btn;
AlertDialog.Builder alrt;

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

    alrt = new AlertDialog.Builder(MainActivity.this);
    alrt.setIcon(R.mipmap.ic_launcher);
    alrt.setTitle("Login");
    alrt.setCancelable(false);
    alrt.setView(R.layout.mylayout);

    alrt.setPositiveButton("OK", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {

        }
    });
    alrt.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
        }
    });
  

alrt.show();

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = new Intent(MainActivity.this,Second.class);
            startActivity(i);
        }
    });
}
}

答案 1 :(得分:0)

  

这是我想要与[...]

链接的.java文件      

public class Second extends AppCompatActivity{

好的......这就是这段代码的作用

Intent i = new Intent(MainActivity.this,Second.class);
startActivity(i);

如果您尝试使用对话框中包含的视图并回复其中的按钮进行登录,则需要从活动中删除该按钮,在alrt.show()中添加onCreate而不是onClick并将Activity开始代码移动到对话框的onClick处理程序中。

还值得一提的是,该对象是一个构建器,所以你可以这样做

View dialogView = LayoutInflater.from(MainActivity.this).inflate(R.layout.mylayout, null);
final EditText editUsername = dialogView.findViewById(R.id.editText);
// TODO: Get other views from mylayout.xml

new AlertDialog.Builder(MainActivity.this)
    .setIcon(R.mipmap.ic_launcher)
    .setTitle("Login")
    .setCancelable(false)
    .setView(dialogView)
    .setPositiveButton("OK", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            String username = editUsername.getText().toString();
            // TODO: Get more variables
            // TODO: Verify credentials
            Intent i = new Intent(MainActivity.this,Second.class);
            startActivity(i);
        }
    })
    .setNegativeButton("CANCEL", null)
    .show();

如前所述,请删除btn.setOnClickListener