доступ к представлениям намерений из класса activity в класс java

#android #android-intent

#Android #android-намерение

Вопрос:

У меня есть один класс Java и один класс Activity.

В моем классе Java он состоит из бизнес-логики. Я хочу получить доступ к текстовым представлениям из класса activity в мой класс Java.

Если я создам объект для класса activity. Я получил все представления в классе activity как NULL и получил исключение нулевого указателя.

Это мой класс Java, здесь я создал объект для класса activity, и здесь я получаю NULLpointerException для tdoor.setText() метода.

 public class Subscribe {

viewtiles vtiles=new viewtiles();


public void sendMessageforstatus(String status)
{
        if(status.contains("Door is open"))
        {


                vtiles.tdoor.setText("OPEN");

        }

        else if(status.equalsIgnoreCase("Door is close"))
        {

            vtiles.tdoor.setText("CLOSE");
        }
  

Это мой класс макета activity

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tilesview);

    tdoor = (TextView) findViewById(R.id.door2);
}
  

XML

 <RelativeLayout xmlns:android="schemas.android.com/apk/res/android"; 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:background="@android:color/background_light" > 
       <TextView android:layout_width="79dp" 
           android:layout_height="wrap_content" 
           android:text="Door" 
           android:layout_marginTop="10dp" 
           android:layout_marginLeft="52dp" 
           android:id="@ id/door1" 
           android:textColor="@android:color/black" 
           android:textSize="20dp" /> 
</RelativeLayout>
  

Можете ли вы, пожалуйста, помочь мне с этой проблемой…

Комментарии:

1. опубликуйте свой XML-код

2. <RelativeLayout xmlns:android=» schemas.android.com/apk/res/android » android:layout_width=»match_parent» android:layout_height=»match_parent» android:background=»@android:color / background_light» >:layout_marginTop=»10dp» android:layout_marginLeft=»52dp» android: id =»@ id / door1″ android: textColor =»@android: color / black» android:textSize =»20dp» />

3. Когда вы создаете свою viewtiles activity by new viewtiles() , вы создаете совершенно новую activity вместо доступа к уже существующей activity, к которой, я полагаю, вы хотите получить доступ. Кроме того, это плохой дизайн для доступа к activity (классу контроллера в смысле MVC) из класса бизнес-логики. Вам следует лучше получить доступ к классу бизнес-логики из activity.

4. тогда как я могу получить доступ к существующей активности? @gus42

5. Вы можете получить доступ к существующему activity, передав ссылку в качестве параметра вашему Subscribe классу, например public Subscribe(viewtiles vtiles) . Но смотрите Мой комментарий раньше: это плохой дизайн.

Ответ №1:

Вы можете передать объект TextView в свой класс Java,

 public void sendMessageforstatus(String status, TextView txt)
{
   // example
   txt.setText("OPEN");
}
  

Комментарии:

1. я вызываю метод sendMessageforstatus() из другого действия, поэтому я не могу передать объект TectView