我有一个mainActivity.java
类,其布局名为activity_main.xml
和一个名为drawer_menu.xml
的.xml文件,其中有一个textView
显示在应用程序的drawer menu
中我想将抽屉菜单的textView
文本设置为我在String
类中拥有的mainActivity.java
值。 如何在mainActivity类中访问该textView?
activity_main.java(访问textView的部分):
/**
* Prompts the user for his/her username
* when the tutorial is done
*/
private void promptForUsername() {
UsernameDialog dialog = new UsernameDialog();
dialog.setCancelable(false);
dialog.show(getFragmentManager(),"USERNAME_DIALOG");
username.setText(getUsername());
}
public void setUsername(String name) {
tempName = name;
}
public String getUsername() {
return tempName;
}
UsernameDialog.java类:
public class UsernameDialog extends DialogFragment {
@BindView(R.id.editText) EditText mEditText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// inflate the layout using the dialog themed context
final Context context = getActivity();
final LayoutInflater inflater = LayoutInflater.from(context);
final View view = inflater.inflate(R.layout.username_dialog,null,false);
final MainActivity activity = new MainActivity();
ButterKnife.bind(this,view);
DialogInterface.OnClickListener posListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
activity.setUsername(mEditText.getText().toString());
Log.d("USERNAME",mEditText.getText().toString());
}
};
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
.setTitle("Choose your username")
.setView(view)
.setPositiveButton("OK",posListener);
return builder.create();
}
}
drawer_menu.xml(包含要访问的TextView):
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="@color/NavigationDrawerHeader">
<ImageView
android:id="@+id/menu_logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="18dp"
android:layout_marginTop="10dp"
android:adjustViewBounds="true"
android:contentDescription="@string/logo"
app:srcCompat="@drawable/user_icon" />
<TextView
android:id="@+id/username"
android:layout_width="wrap_content"
android:layout_height="66dp"
android:layout_alignParentStart="true"
android:layout_alignTop="@+id/menu_logo"
android:layout_marginStart="93dp"
android:layout_marginTop="5dp"
android:fontFamily="@font/alegreya_sans_extrabold"
android:paddingTop="25dp"
android:text="username"
android:textColor="#ffffff"
android:textSize="18sp" />
</RelativeLayout>
答案 0 :(得分:1)
在onCreate()
的{{1}}方法末尾尝试此代码
MainActivity.java
答案 1 :(得分:0)
您可以定义
static TextView tv;
并且可以从其他班级访问
答案 2 :(得分:0)
没有人建议使用静态视图。进一步了解here。
现在,根据您的情况,您可以创建一个String资源,以便能够在两个活动中使用相同的文本。怎么做?此处:
<string name="my_string">what ever u want to put here </string>
TextView textView = (TextView) findViewById(R.id.Id_of_TextView); textView.setText(getString(R.id.my_string));
OR
您可以直接在两个textview的xml中添加该字符串。
要获取变量中的字符串值,可以使用
String temp = getResources().getString(R.string.my_string);
答案 3 :(得分:0)
如果在xml布局文件中给textview一个id,则可以使用TextView myTextView =(TextView)findViewById(R.id.myTextView);