【问题标题】:Is it possible to receive an EditText from an xml activity to java that's not connected to the xml?是否可以从 xml 活动接收 EditText 到未连接到 xml 的 java?
【发布时间】:2015-05-15 14:58:40
【问题描述】:

我有一个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 文件得到了一个空值。我该怎么做?

如果我不够具体,请告诉我,这是一个很难问的问题。
这是我尝试使用并接收编辑文本的其他 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 看看它是否有效,它没有。

【问题讨论】:

  • setContentView(R.layout.activity_note); 方法中指定您正在使用的xml 文件,当在另一个活动中它不同时,您无法访问第一个活动中的元素。在第二个 Activity 的布局中放入你想要的相同 EditText,否则无法访问它
  • 您可以发布您遇到的错误吗?我的意思是logcat
  • 我认为错误日志没有必要,因为我认为很明显例外是EditText,当从第二个Activity访问时为null,因为它不存在于当前布局中

标签: java android xml android-edittext


【解决方案1】:

像这样修改 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();
};

【讨论】:

    【解决方案2】:

    在A类中将edittext声明为public static

    公共静态EditText标题;

    现在您可以在 B 类中访问此编辑文本

    A.title

    【讨论】:

      猜你喜欢
      • 2014-01-12
      • 1970-01-01
      • 1970-01-01
      • 2010-10-07
      • 2017-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多