메인 시작 클래스에 main.xml을로드하고 있는데 데이터베이스에서 정보를로드하는 다른 클래스에서 TextView에 액세스하는 방법을 알아 내려고하고 있습니다. 그 정보를 TextView에 게시하고 싶습니다.다른 클래스의 TextView에 액세스하기
지금까지 Google에서 유용한 예제를 찾지 못했습니다.
편집
: 나는메인 시작 클래스에 main.xml을로드하고 있는데 데이터베이스에서 정보를로드하는 다른 클래스에서 TextView에 액세스하는 방법을 알아 내려고하고 있습니다. 그 정보를 TextView에 게시하고 싶습니다.다른 클래스의 TextView에 액세스하기
지금까지 Google에서 유용한 예제를 찾지 못했습니다.
편집
: 나는내가 모든 UI 업데이트를 유지하는 것 :
이
은 예입니다.DBWork
클래스를 통해 표시된 텍스트를
Activity
에 반환 할 수 있습니다. 그래서 같은 :
public class Main extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView tv = (TextView) view.findViewById(R.id.TextView01);
DBWork db = new DBWork("192.168.2.14:8080/DH/DPost";, "test_db");
tv.setText(db.getText());
}
}
그런 다음 DB 클래스 :
public class DBWork{
...
public String getText(){
//do stuff
return "";
}
}
가 UI 스레드에서 실행되는대로 onCreate
동안 수행 데이터베이스 작업이 가능한 한 빨리해야한다는주의하시기 바랍니다. 장기 실행 데이터베이스 쿼리를 수행하려는 경우 AsyncTask
을 사용하거나 Thread
을 새로 만들고 Handler
을 사용하여 UI를 업데이트해야합니다.
당신은 당신의 텍스트 뷰는 XML을 사용하고 제공 정의 havew는 NullPointerException을 얻을 그렇게하지만
import android.widget.TextView;import android.view.View;
public class DBWork{
private View view;
...
TextView tv = (TextView) view.findViewById(R.id.TextView01);
tv.setText("TEXT ME")
, 매번 : 이 내 데이터베이스 작업을하고있는 클래스입니다 이드. 예 : 다음
<TextView android:layout_width="wrap_content"
android:layout_height="match_parent"
android:textColor="#FFF"
android:gravity="center_vertical|right"
android:paddingLeft="5dip"
android:paddingRight="5dip"
android:text="@string/name"
android:id="@+id/myTextViewInXml"/>
당신이 모든 클래스에서 CANN 액세스가
TextView myTextView = (TextView) findViewById(R.id.myTextViewInXml);
'findViewById (int)'는 이미'setContentView (int) '를 사용하여로드 한 리소스에서만 UI 요소를 검색한다고 생각합니다. –
를 사용하여 당신은 위해 LayoutInflater를 사용한다 :
LayoutInflater inflater = getLayoutInflater();
View myView = inflater.inflate(R.layout.main, null);
TextView myTextView = (TextView) findViewById(R.id.myTextViewInXml);
을하지만 전에 :
LayoutInflater inflater = getLayoutInflater();
View myView = inflater.inflate(R.layout.main, null);
TextView myTextView = (TextView) findViewById(R.id.myTextViewInXml);
그것은'myView.findViewById (..)입니다. – Prabs
이 맞아 원하는 파일을 지정해야합니다. 전자는 기준 :
된 setContentView (R.id.myTextViewInXml을 포함하는 XML 파일의 ID) 그
findViewById(R.id.myTextViewInXml);
없이
항상 곁에 null
를 반환합니다. 내가 당신이라면 메인 Activity
클래스 내에서
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.virtualtour); // before !!
progress_bar = (ProgressBar) findViewById(R.id.vt_progress);
loading_ly = (RelativeLayout) findViewById(R.id.vt_layout_loading);
panorama_description = (TextView) findViewById(R.id.vt_description);
virtualtour_relatively = (RelativeLayout) findViewById(R.id.vt_layout_opengl);
.........
클래스 인스턴스를 만든 후 모든 컨트롤에 참조를 전달할 수 있습니다. 개인적으로 모든 컨트롤을 공용 변수로 가지는 전체 클래스를 전달합니다. 보기 BT1이 class.you 당신이 BT1 예를 함께 할 가장 원하는 일을, 클래스 인스턴스를 사용하여 BT1에 액세스하고 id.Now를 얻을 수 서로입니다 위의 예에서
TextView bt1 =m_activity.findViewById(R.id.textview1);
.
참고 : 확실히 다른 클래스에서는 bt1이 공개되어 있어야합니다.
DBWork 클래스를 호출하는 기본 클래스는 어떻습니까? –
이것은 onCreate 안에 있습니다 : 새로운 DBWork ("http://192.168.2.14:8080/DH/DPost", "test_db"); – Jenny