0

アプリウィジェットでtxtファイルを読み取る必要があります。

「NASTAVENI」という名前の外部セット アクティビティで txt を作成します。

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.set);
    editor=(EditText)findViewById(R.id.editor);
    Button btn=(Button)findViewById(R.id.close);    
    btn.setOnClickListener(new Button.OnClickListener() {
        public void onClick(View v) {
            phoneNo = editor.getText().toString(); 
            finish();
        }
    });
}

public void onResume() {
    super.onResume();

    try {
        InputStream in=openFileInput("notes.txt");

        if (in!=null) {
            InputStreamReader tmp=new InputStreamReader(in);
            BufferedReader reader=new BufferedReader(tmp);
            String str;
            StringBuilder buf=new StringBuilder();

            while ((str = reader.readLine()) != null) {
                buf.append(str+"\n");
            }

            in.close();
            editor.setText(buf.toString());
        }
    }
    catch (java.io.FileNotFoundException e) {

    }
    catch (Throwable t) {
        Toast
            .makeText(this, "Exception: "+t.toString(), 2000)
            .show();
    }
}

/*BACK**************************************************************************************************************************************/
public void onPause() {
    super.onPause();

    try {
        OutputStreamWriter out=
                new OutputStreamWriter(openFileOutput("notes.txt", 0));

        out.write(editor.getText().toString());
        out.close();        
    }
    catch (Throwable t) {
        Toast
            .makeText(this, "Exception: "+t.toString(), 2000)
            .show();
    }
}

}

アプリ ウィジェットの主なアクティビティは、「ウィジェット」という名前です。このアクティビティ「ウィジェット」で、外部アクティビティ「NASTAVENI」のtxtファイルを読み込む必要があります。Activity Widget と NASTAVENI は同じパッケージに入っています。

このコードは正しくありません (エラー java.lang.NullPointerException)

   try {
                    InputStream in=openFileInput("notes.txt");


                        InputStreamReader tmp=new InputStreamReader(in);
                        BufferedReader reader=new BufferedReader(tmp);
                        String str;
                        StringBuilder buf=new StringBuilder();

                        while ((str = reader.readLine()) != null) {
                            buf.append(str+"\n");
                        }

                        in.close();
                        editor.setText(buf.toString());
                        phoneNo = "77"; 

                }
                catch (java.io.FileNotFoundException e) {
                    Toast toast=Toast.makeText(context, "Error FFE!", 1000);
                    toast.setGravity(Gravity.CENTER, 0, 0);
                    toast.show();
                }
                catch (Throwable t) {
                    Toast toast=Toast.makeText(context, "Error T!" +t.toString(), 1000);
                    toast.setGravity(Gravity.CENTER, 0, 0);
                    toast.show();
}

私の英語でごめんなさい

4

1 に答える 1

0

txt から読み取るウィジェットだけが必要なのか、「アクティビティ」も必要なのかわかりません。txt ファイルを読み取るために、次のような関数で、ファイルを読み取り、必要なものを返すクラスを作成します。

  ShowLine(){
    try {
                InputStream is = mContext.getAssets().open(monthFile);
                BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
                // Skips lines
                Log.w("day", String.valueOf(monthFile));
                for (int i = 0; i< DayMonth-1; i++) {
                    reader.readLine();
                }
                Line = reader.readLine(); // read the line of the day

                Name= Line.substring(Line.indexOf("*") + 1,Line.indexOf("-"));// I read between + and (my data is like: DAY * NAME -)
                dia= ""+DayMonth+" de "+ monthNames[Month]+"" ;
                Log.w("Name", String.valueOf(Name)); //to check that it works

            } catch (IOException e) {
                e.printStackTrace();
            }

        }

    }

widget の場合、 Widget であるクラスを次のように作成する必要があります。

public class Widget extends AppWidgetProvider {
String dia = "1 Feb.";
String Name= "Pavel";

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){

        mContext = context;
        Resources res = mContext.getResources();

        ComponentName thisWidget = new ComponentName(context,Widget.class);
        int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);

        for(int widgetIds: allWidgetIds){


            RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
            //Log.w("Widget test", String.valueOf(number));

            try{
                ShowLine();
                Log.w("Line 1", String.valueOf(Name));

            }catch (Exception e) {
                Name= "error";
            }

関数全体を貼り付けていないため、コードが完全に機能するかどうかはわかりません。おそらく、少し完成させる必要があります。しかし、疑問がある場合は、これが良いチュートリアルです: vogella.com お役に立てば幸いです :)

于 2012-09-03T08:48:36.910 に答える