Я создал свою деятельность из своего json-файла.Как добавить текстовый просмотр программно из JSONArray
Теперь я пытаюсь поместить TextView в свою новую деятельность, но это не так.
Вот мой JSON файл:
"interface":{
"View":[
{
"id":"0",
"type":"Simple",
"Label":[
{
"text":"bonjour comment ca va ?",
"position_x":"200",
"position_y":"400"
},
{
"text":"coucou les amis",
"position_x":"200",
"position_y":"200"
}
],
и т.д.
Моя активность работает хорошо.
общественный класс ClassicView расширяет активность {
public int myid;
public ClassicView() {
}
public ClassicView(int id){
super();
myid = id;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.linearlayout);
LinearLayout ll = (LinearLayout) findViewById(R.id.linearlayout2);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(new ViewGroup.MarginLayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
setContentView(ll);
}
}
Я получаю вид с его идентификатором из JSON. Но я не знаю, как разместить мой текст в моем представлении.
Вот мой код:
public ClassicView getClassicViewWithId(int id) throws JSONException {
JSONArray myView = myjsonobj.getJSONObject("interface").getJSONArray("View");
for (int i = 0; i < myView.length(); i++) {
if (myView.getJSONObject(i).getInt("id") == id) {
Log.e("IDVIEW", myView.getJSONObject(i).getString("id"));
ClassicView myClassicView = new ClassicView(myView.getJSONObject(i).getInt("id"));
classicSetLabel(myView.getJSONObject(i).getJSONArray("Label"), myClassicView);
return myClassicView;
}
}
return null;
}
public void classicSetLabel(JSONArray myArrayLabel, ClassicView classicView) throws JSONException {
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.BOTTOM;
Log.e("@@@@@WARNING TEXTLABEL :", "classicSetLabelErreur1");
Log.e("@@@@@WARNING TEXTLABEL :", "classicSetLabelErreur2");
for (int i = 0; i < myArrayLabel.length(); i++) {
Log.e("CLASSICVIEW", classicView.toString());
TextView myTextView = new TextView(classicView);
myTextView.append(myArrayLabel.getJSONObject(i).getString("text"));
classicView.addContentView(myTextView, params);
Log.e("@@@@@WARNING TEXTLABEL :", myArrayLabel.getJSONObject(i).getString("text"));
}
}
Мой MainActivity.java:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
JSONParser jParser = null;
try {
jParser = new JSONParser("JsonTest.txt");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
ClassicView view = jParser.getClassicViewWithId(0);
//Log.e("idVIEWMAIN :", msg)
Intent intent = new Intent(MainActivity.this, view.getClass());
startActivity(intent);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Когда я пытаюсь создать экземпляр моего TextView, мой LogCat сказать java.lang.NullPointerException Вызывает: at com.fchps.bya.json.JSONParser.classicSetLabel (JSONParser.java:89)
Строка 89 = TextView myTextView = новый TextView (classicView);
Так кто может объяснить мне, в чем моя ошибка. Я пытался в течение 1 недели, и он не работает, так что я пришел сюда, чтобы знать, если somoby может помочь мне пожалуйста :)
Я не могу добавить свой TextView на мой взгляд, с: `Почему:
classicView.setContentView(myTextView);
не работает? У меня уже есть LinearLayout в моем classicview class.`
Спасибо :)
метода 'classicSetLabel' внутри которой' activity' или это отдельный класс ? –
classicSetLabel находится в моем классе JSONParser, внутри которого нет активности.Но мой ClassicView herite от Activity – Fcps
«ClassicView», наследующий деятельность, никоим образом не поможет. Вам нужен контекст текущей работы или контекста приложения. Создание нового объекта _activity_ и его передача таким образом не будут работать –