是否可以从未连接到 xml 的 xml activity 到 java 接收 EditText?
Is it possible to receive an EditText from an xml activity to java that's not connected to the xml?
我有一个 XML 上面有一个编辑文本,一个 java 文件连接到它可以接收编辑文本并变成一个字符串没问题
XML
<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="10dp"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.coopery.notes.NoteActivity"
android:background="#da141415">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/etTitle"
android:layout_alignParentStart="true"
android:inputType="textCapSentences|textAutoCorrect"
android:imeOptions="actionDone"
android:hint="Title..."
android:textSize="17sp"
android:textColor="#ffffffff" />
<EditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:inputType="textMultiLine|textCapSentences|textAutoCorrect"
android:scrollbars="vertical"
android:ems="10"
android:id="@+id/etNote"
android:layout_below="@id/etTitle"
android:layout_alignParentStart="true"
android:gravity="top"
android:background="@null"
android:hint="Note..."
android:textSize="17sp"
android:textColor="#ffffffff" />
Java
public class NoteActivity extends Activity {
Typeface customFont;
EditText etTitle;
EditText etNote;
String oldTitle;
AlarmPage A = new AlarmPage();
Notification.Builder notification;
NotificationManager manager;
private String Title, Note1, Note;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_note);
String fileName = getIntent().getStringExtra(MainActivity.EXTRA_TITLE);
oldTitle = fileName;
etTitle = (EditText) findViewById(R.id.etTitle);
etNote = (EditText) findViewById(R.id.etNote);
String Title = etTitle.getText().toString();
String Note = etNote.getText().toString();
但是另一个 java 文件,当我尝试获取相同的代码时,它得到的是一个空值。我该怎么做?
如果我不够具体,请告诉我,这个问题有点难问。
这是我尝试使用并接收 edittext
的另一个 java 文件的方法
public void notification() {
setContentView(R.layout.activity_note);
EditText TitleE, NoteE;
TitleE = (EditText) findViewById(R.id.etTitle);
NoteE = (EditText)findViewById(R.id.etNote);
String Title, Note;
Title = TitleE.getText().toString();
Note = NoteE.getText().toString();
//both PingService and CommonConstants java files are needed for this method
NotificationCompat.Builder notification = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle(Title)
.setContentText(Note)
.setDefaults(Notification.DEFAULT_ALL) // requires VIBRATE
.setStyle(new NotificationCompat.BigTextStyle().bigText("hi"));
注意:我放了第二个 setContentView 看它是否有效,但没有。
像这样修改 enTitle 和 enNote 声明,这将使它们在您的所有活动中成为全局:
public static EditText etTitle;
public static EditText etNote;
然后您将能够从其他活动中获取它们的值,但是如果您尝试从其他活动中更改它们,则会出现异常。
如果其他人要修改您的代码,最好将这些变量设为私有,并改为创建两个方法:
public static String getTitle() {
return enTitle.getText().toString();
};
public static String getNote() {
return enNote.getText().toString();
};
在 class A
中将编辑文本声明为 public 静态
public 静态 EditText 标题;
现在您可以在 class B
中访问此编辑文本
A.title
我有一个 XML 上面有一个编辑文本,一个 java 文件连接到它可以接收编辑文本并变成一个字符串没问题
XML
<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="10dp"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.coopery.notes.NoteActivity"
android:background="#da141415">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/etTitle"
android:layout_alignParentStart="true"
android:inputType="textCapSentences|textAutoCorrect"
android:imeOptions="actionDone"
android:hint="Title..."
android:textSize="17sp"
android:textColor="#ffffffff" />
<EditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:inputType="textMultiLine|textCapSentences|textAutoCorrect"
android:scrollbars="vertical"
android:ems="10"
android:id="@+id/etNote"
android:layout_below="@id/etTitle"
android:layout_alignParentStart="true"
android:gravity="top"
android:background="@null"
android:hint="Note..."
android:textSize="17sp"
android:textColor="#ffffffff" />
Java
public class NoteActivity extends Activity {
Typeface customFont;
EditText etTitle;
EditText etNote;
String oldTitle;
AlarmPage A = new AlarmPage();
Notification.Builder notification;
NotificationManager manager;
private String Title, Note1, Note;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_note);
String fileName = getIntent().getStringExtra(MainActivity.EXTRA_TITLE);
oldTitle = fileName;
etTitle = (EditText) findViewById(R.id.etTitle);
etNote = (EditText) findViewById(R.id.etNote);
String Title = etTitle.getText().toString();
String Note = etNote.getText().toString();
但是另一个 java 文件,当我尝试获取相同的代码时,它得到的是一个空值。我该怎么做?
如果我不够具体,请告诉我,这个问题有点难问。
这是我尝试使用并接收 edittext
public void notification() {
setContentView(R.layout.activity_note);
EditText TitleE, NoteE;
TitleE = (EditText) findViewById(R.id.etTitle);
NoteE = (EditText)findViewById(R.id.etNote);
String Title, Note;
Title = TitleE.getText().toString();
Note = NoteE.getText().toString();
//both PingService and CommonConstants java files are needed for this method
NotificationCompat.Builder notification = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle(Title)
.setContentText(Note)
.setDefaults(Notification.DEFAULT_ALL) // requires VIBRATE
.setStyle(new NotificationCompat.BigTextStyle().bigText("hi"));
注意:我放了第二个 setContentView 看它是否有效,但没有。
像这样修改 enTitle 和 enNote 声明,这将使它们在您的所有活动中成为全局:
public static EditText etTitle;
public static EditText etNote;
然后您将能够从其他活动中获取它们的值,但是如果您尝试从其他活动中更改它们,则会出现异常。
如果其他人要修改您的代码,最好将这些变量设为私有,并改为创建两个方法:
public static String getTitle() {
return enTitle.getText().toString();
};
public static String getNote() {
return enNote.getText().toString();
};
在 class A
中将编辑文本声明为 public 静态public 静态 EditText 标题;
现在您可以在 class B
中访问此编辑文本A.title