我正在创建一个包含"每日提示的应用程序"特征。这实际上是一个弹出窗口,由按钮激活。它目前有填充文本,但我正在尝试创建一种方法,其中读取文本文件(存储在src / main / assets中),并在弹出窗口中显示单独的行。我怎样才能做到这一点?文本文件中的这些行由返回键个性化。每次单击按钮时,我都会找到一种显示唯一提示的方法,但稍后我会进入该部分。
以下是弹出窗口的代码:
public class homeFragmentDialog extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AlertDialog.Builder builder1 = new AlertDialog.Builder(this);
builder1.setMessage("Filler text.");
builder1.setCancelable(true);
builder1.setPositiveButton(
"Close",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert11 = builder1.create();
alert11.show();
}
}
以防万一,这里是片段文件,其中包含激活上一个活动的按钮:
public class homeFragment extends Fragment {
View rootView;
private Button button0;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_home, container, false);
button0 = (Button) rootView.findViewById(R.id.buttonDialog);
button0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), homeFragmentDialog.class);
startActivity(intent);
}
});
return rootView;
}
}
答案 0 :(得分:0)
This应该足以让您从assets文件夹中的文本文件中获取信息为String。
如果您在使用此短代码时遇到问题this one应该更广泛。
将文本作为String对象后,您应该能够将其添加到 setMessage 函数中以显示它。
答案 1 :(得分:0)
如果您访问上下文,则可以使用getAssets():
try {
InputStream inputStream = getAssets().open("textfile.txt");
builder1.setMessage(convertStreamToString(inputStream));
} catch (IOException e){
// Log exception
}
convertStreamToString()来自Pavel Repin's answer:
static String convertStreamToString(java.io.InputStream is) {
java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
return s.hasNext() ? s.next() : "";
}
或者你可以读取你想要的字节数(在你的情况下是一行)。
您可以使用此方法获取单行代替convertStreamToString():
static String getLineFromStream(java.io.InputStream is, int linePos){
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line = null;
try {
for (int i = 0; i <= linePos; i++) {
line = br.readLine();
}
} catch (IOException e){
// Handle exception here (or you can throw)
}
return line;
}